不支持连续自动对焦模式时的Android自动对焦

时间:2014-05-08 22:10:17

标签: android android-camera autofocus

我的应用程序中有一个摄像头,我希望它能够以与手机摄像头相同的方式连续自动对焦。我找到了模式FOCUS_MODE_CONTINUOUS_VIDEOFOCUS_MODE_CONTINUOUS_PICTURE,但我测试的一些HTC Gingerbread手机不支持它们。

我正在做的是确定是否可以使用这些模式:

        Camera.Parameters parameters = mCamera.getParameters();
        List<String> supportedFocusModes = parameters.getSupportedFocusModes();

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
            supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
        }
        else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
        }
        else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
            // auto focus on request only
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
        }

在几款不同的Gingerbread HTC手机上运行我不能恢复连续模式,但我得到了#34; auto&#34;。这让我可以根据需要自动对焦(当我拨打mCamera.autoFocus(null)时,但如果用户移动相机,相机将不会重新聚焦。

我无法将对焦模式设置为相机不支持的任何内容,如果我这样做则会显示空白。

我尝试过的一个解决方案是在计时器上调用mCamera.autoFocus(null)。这会导致相机连续重新对焦,即使它已经对焦。

有没有办法在这些手机上实现持续的自动对焦体验?当我在这些手机上查看HTC相机应用程序时,它确实具有连续的自动对焦功能 - 当您在相机周围移动时,重新聚焦并且在图像聚焦后不会保持重新对焦。

2 个答案:

答案 0 :(得分:3)

我们要求支持各种各样的手机。我的解决方案最终是以不同的方式处理每个案例。

对于没有连续自动对焦支持的手机的情况,我实施了一个实用程序,使用SensorManager收听加速度计,并在用户移动相机时触发mCamera.autoFocus(...)

还有一些较旧的平板电脑只支持固定焦点(谁会使用这样的东西!),在这种情况下需要立即拍摄照片 - 而不是焦点回调。

对于大多数现代手机,上面的代码段可以使用FOCUS_MODE_CONTINUOUS_PICTURE

答案 1 :(得分:0)

我的三星S4上有类似的pb,我解决了它:

camera.setParameters(parameters);
    camera.autoFocus(null);

Google doc here中建议这样做。

要使相机参数生效,您的应用程序必须拨打setParameters(Camera.Parameters)