kos*_*kos 12 android autofocus android-camera
我的应用程序中有一个摄像头,我希望它能够以与手机摄像头相同的方式连续自动对焦.我发现模式FOCUS_MODE_CONTINUOUS_VIDEO和FOCUS_MODE_CONTINUOUS_PICTURE,但他们不会被一些HTC手机姜饼我测试上的支持.
我正在做的是确定是否可以使用这些模式:
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);
}
Run Code Online (Sandbox Code Playgroud)
在几种不同的姜饼HTC手机上运行我没有得到连续模式,但我得到"自动".这让我可以根据需要自动对焦(当我打电话时mCamera.autoFocus(null),如果用户移动相机,相机将不会重新聚焦.
我无法将对焦模式设置为相机不支持的任何内容,如果我这样做,则会显示空白.
我试过的一个解决方案是调用mCamera.autoFocus(null)计时器.这会使相机连续重新对焦,即使它已经对焦.
有没有办法在这些手机上实现持续的自动对焦体验?当我在这些手机上查看HTC相机应用时,它确实具有连续自动对焦 - 当您在相机周围移动时重新聚焦并且在图像聚焦后不会保持重新对焦.
我们需要支持非常广泛的手机。我最终的解决方案是对每种情况进行不同的处理。
对于不支持连续自动对焦的手机场景,我实现了一个实用程序来监听加速度计的使用情况,并在用户移动相机时SensorManager触发。mCamera.autoFocus(...)
还有一些较旧的平板电脑仅支持固定焦点(谁会使用这样的东西!),在这种情况下需要立即拍摄照片 - 而不是在焦点回调上。
对于大多数现代手机,上面的代码片段可以很好地使用FOCUS_MODE_CONTINUOUS_PICTURE。