[go: nahoru, domu]

Skip to content

Commit

Permalink
Fixes #403 by adding proper api level checks for camera types on the …
Browse files Browse the repository at this point in the history
…device. Props shooh
  • Loading branch information
roundhill committed Apr 26, 2013
1 parent e38f05b commit 1e71461
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 15 deletions.
20 changes: 7 additions & 13 deletions src/org/wordpress/android/ui/WPActionBarActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import org.wordpress.android.ui.posts.PostsActivity;
import org.wordpress.android.ui.prefs.PreferencesActivity;
import org.wordpress.android.ui.reader.ReaderActivity;
import org.wordpress.android.util.DeviceUtils;
import org.wordpress.android.util.EscapeUtils;

/**
Expand Down Expand Up @@ -399,25 +400,18 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
break;
case QUICK_PHOTO_ACTIVITY:
mShouldFinish = false;
PackageManager pm = WPActionBarActivity.this.getPackageManager();
intent = new Intent(WPActionBarActivity.this, EditPostActivity.class);
if
(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_CAMERA);
} else {
intent.putExtra("quick-media", Constants.QUICK_POST_PHOTO_LIBRARY);
}
intent.putExtra("quick-media", DeviceUtils.getInstance().hasCamera(getApplicationContext())
? Constants.QUICK_POST_PHOTO_CAMERA
: Constants.QUICK_POST_PHOTO_LIBRARY);
intent.putExtra("isNew", true);
break;
case QUICK_VIDEO_ACTIVITY:
mShouldFinish = false;
PackageManager vpm = WPActionBarActivity.this.getPackageManager();
intent = new Intent(WPActionBarActivity.this, EditPostActivity.class);
if (vpm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_CAMERA);
} else {
intent.putExtra("quick-media", Constants.QUICK_POST_VIDEO_LIBRARY);
}
intent.putExtra("quick-media", DeviceUtils.getInstance().hasCamera(getApplicationContext())
? Constants.QUICK_POST_VIDEO_CAMERA
: Constants.QUICK_POST_VIDEO_LIBRARY);
intent.putExtra("isNew", true);
break;
case VIEW_SITE_ACTIVITY:
Expand Down
5 changes: 3 additions & 2 deletions src/org/wordpress/android/ui/posts/EditPostActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
import org.wordpress.android.models.MediaFile;
import org.wordpress.android.models.Post;
import org.wordpress.android.ui.accounts.NewAccountActivity;
import org.wordpress.android.util.DeviceUtils;
import org.wordpress.android.util.EscapeUtils;
import org.wordpress.android.util.ImageHelper;
import org.wordpress.android.util.LocationHelper;
Expand Down Expand Up @@ -509,11 +510,11 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0, 0, 0, getResources().getText(R.string.select_photo));
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
if (DeviceUtils.getInstance().hasCamera(getApplicationContext())) {
menu.add(0, 1, 0, getResources().getText(R.string.take_photo));
}
menu.add(0, 2, 0, getResources().getText(R.string.select_video));
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
if (DeviceUtils.getInstance().hasCamera(getApplicationContext())) {
menu.add(0, 3, 0, getResources().getText(R.string.take_video));
}
}
Expand Down
28 changes: 28 additions & 0 deletions src/org/wordpress/android/util/DeviceUtils.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.wordpress.android.util;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;

import org.wordpress.android.WordPress;

/**
Expand Down Expand Up @@ -70,4 +74,28 @@ private DeviceUtils() {
public static String getBlackBerryUserAgent() {
return "wp-blackberry/"+WordPress.versionName;
}

/**
* Checks camera availability recursively based on API level.
*
* TODO: change "android.hardware.camera.front" and "android.hardware.camera.any" to
* {@link PackageManager#FEATURE_CAMERA_FRONT} and {@link PackageManager#FEATURE_CAMERA_ANY},
* respectively, once they become accessible or minSdk version is incremented.
*
* @param context The context.
* @return Whether camera is available.
*/
public boolean hasCamera(Context context) {
final PackageManager pm = context.getPackageManager();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)
|| pm.hasSystemFeature("android.hardware.camera.front");
}

return pm.hasSystemFeature("android.hardware.camera.any");
}
}

0 comments on commit 1e71461

Please sign in to comment.