]> Pileus Git - ~andy/freeotp/commitdiff
Make focus mode selection more flexible
authorNathaniel McCallum <npmccallum@redhat.com>
Tue, 10 Dec 2013 17:39:15 +0000 (12:39 -0500)
committerNathaniel McCallum <npmccallum@redhat.com>
Tue, 10 Dec 2013 17:39:15 +0000 (12:39 -0500)
AndroidManifest.xml
src/org/fedorahosted/freeotp/CameraDialogFragment.java
src/org/fedorahosted/freeotp/MainActivity.java

index a1f6d8992b3e57ffc4f5a258bb96e6b60c701eb5..b514f4d5758b7cacbecea0230fd7ff94697245dc 100644 (file)
@@ -21,7 +21,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="org.fedorahosted.freeotp"
-    android:versionCode="7"
+    android:versionCode="8"
     android:versionName="1.3" >
 
     <uses-sdk
index f4c7760a91f8746dc9a2693ef45f5602a3a4638a..c3c23dd028cbcaad8c48c02d6bb2f85aae49d022 100644 (file)
@@ -20,6 +20,9 @@
 
 package org.fedorahosted.freeotp;
 
+import java.util.List;
+
+import android.annotation.TargetApi;
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -84,6 +87,7 @@ public class CameraDialogFragment extends BaseAlertDialogFragment implements Sur
        }
 
        @Override
+       @TargetApi(14)
        public void surfaceCreated(SurfaceHolder holder) {
                try {
                        mCamera = Camera.open();
@@ -105,7 +109,13 @@ public class CameraDialogFragment extends BaseAlertDialogFragment implements Sur
 
                        // Set auto-focus mode
                        Parameters params = mCamera.getParameters();
-                       params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
+                       List<String> modes = params.getSupportedFocusModes();
+                       if (modes.contains(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
+                               params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
+                       else if (modes.contains(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
+                               params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
+                       else if (modes.contains(Parameters.FOCUS_MODE_AUTO))
+                               params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
                        mCamera.setParameters(params);
                } catch (Exception e) {
                        SurfaceView sv = (SurfaceView) getDialog().findViewById(R.id.camera_surfaceview);
index 1eb632abed79154c96584a1a1da425b1b3413d2f..f72386da07b2064f4c5fcd985680787e342a56a3 100644 (file)
@@ -96,8 +96,7 @@ public class MainActivity extends Activity implements OnMenuItemClickListener {
                case R.id.action_add:
                        // If the device has a camera available, try to scan for QR code
                        PackageManager pm = getPackageManager();
-                       if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) &&
-                               pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)) {
+                       if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
                                new CameraDialogFragment().show(getFragmentManager(),
                                                CameraDialogFragment.FRAGMENT_TAG);
                        } else {