import android.app.Activity;
import android.content.pm.PackageManager;
import android.database.DataSetObserver;
+import android.hardware.Camera;
+import android.hardware.Camera.CameraInfo;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
+ // Look for a back-facing camera.
+ boolean backCamera = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
+
+ // If the above method doesn't return a camera, try to work around it.
+ // Some buggy implementations return false above even when there is a camera.
+ for (int i = Camera.getNumberOfCameras() - 1; i >= 0 && !backCamera; i--) {
+ CameraInfo ci = new CameraInfo();
+ Camera.getCameraInfo(i, ci);
+ backCamera = ci.facing == CameraInfo.CAMERA_FACING_BACK;
+ }
+
// If the device has a camera available, try to scan for QR code
- PackageManager pm = getPackageManager();
- if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
+ if (backCamera) {
new CameraDialogFragment().show(getFragmentManager(),
CameraDialogFragment.FRAGMENT_TAG);
} else {