Android: Check whether camera supports auto-focus?

前端 未结 5 1235
眼角桃花
眼角桃花 2020-12-31 02:17

For the Android API version 2.1 and higher, we can use context:

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)
5条回答
  •  失恋的感觉
    2020-12-31 03:05

    CameraManager cameraManager = (android.hardware.camera2.CameraManager) getSystemService(CAMERA_SERVICE);
    
    int[] afModes = cameraManager.getCameraCharacteristics("0").get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
    
    if (afModes.length <= 1)
    {Log.d(TAG, "Camera doesn't have autofocus");}
    else
    {Log.d(TAG, "Camera has autofocus");}
    
            Log.d(TAG, "CONTROL_AF_AVAILABLE_MODES:");
            for (int position : afModes) {
                switch (afModes[position]) {
                    case 0:
                        Log.d(TAG, "CONTROL_AF_MODE_OFF (0)");
                        break;
                    case 1:
                        Log.d(TAG, "CONTROL_AF_MODE_AUTO (1)");
                        break;
                    case 2:
                        Log.d(TAG, "CONTROL_AF_MODE_MACRO (2)");
                        break;
                    case 3:
                        Log.d(TAG, "CONTROL_AF_MODE_CONTINUOUS_VIDEO (3)");
                        break;
                    case 4:
                        Log.d(TAG, "CONTROL_AF_MODE_CONTINUOUS_PICTURE (4)");
                        break;
                    case 5:
                        Log.d(TAG, "CONTROL_AF_MODE_EDOF (5)");
                        break;
                    default:
                        Log.d(TAG, String.valueOf(afModes[position]));
                }
            }
    

提交回复
热议问题