安卓相机:固定镜头对焦

5
我正在开发一个具有相机相关功能的Android应用程序。
首先,我在SO、XDA等网站上阅读了很多内容,请不要将我重定向到其他无用的帖子。
我试图实现类似于“固定对焦模式”的功能,以便:
1. 我使用“FOCUS_MODE_AUTO”(或其他)启动我的应用程序; 2. 对任意距离的对象进行对焦; 3. 固定当前的对焦; 4. 将相机移动到另一个距离不同且不在焦点范围内的对象。
我尝试了不同的解决方案,例如:
- 在“AutoFocusCallback”中使用“mCamera.cancelAutoFocus()”来防止对焦调整; - 设置一个“FocusArea”:“new Camera.Area(new Rect(-50, -50, 50, 50), 1000)”来固定对焦区域。
我针对API 20进行开发,并在三星Galaxy S5上工作。在此设备上,支持的对焦模式包括: - 自动 - 无限远 - 微距 - 连续视频 - 连续照片
我找到的最常见的建议是重新编译Android...

你想要点击对焦吗?你能发一些SurfaceView类的代码吗? - sandeepmaaram
嗨。我在预览上方添加了一个按钮,理想情况下,它应该能够在自动对焦模式和“固定对焦”模式之间切换。我的代码中没有什么有趣的东西,只是我不知道如何做到这一点,甚至不知道是否可能。 - Zeb
3
你是如何进行对焦的?"自动"模式并不意味着相机会持续对焦,只有在调用autoFocus命令时才会自动对焦,而且没有任何指示表明你期望的结果,不像"微距"或"无限远"模式。如果你没有循环调用autoFocus(许多示例会这样做或者在回调中再次调用它),那么一次对焦后,对焦位置应该会保持不变。 http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback) - Raanan
@Raanan是正确的 - 自动对焦在这种情况下应该正好满足您的需求。在我使用过的设备中,调用cancelAutoFocus()实际上会强制相机重新对焦。 - npace
我刚刚根据您的评论修改了我的代码。我在FOCUS_MODE_CONTINUOUS_PICTURE模式下启动相机,然后使用专用的屏幕按钮将模式更改为FOCUS_MODE_AUTO。看起来一切都正常。 - Zeb
我把我的评论添加为答案。很高兴它起作用了。 - Raanan
2个回答

2

-1

如果我理解正确,您想要保持第一个对象的焦点。您尝试过在对第一个对象进行聚焦后将相机模式更改为FOCUS_MODE_FIXED吗?就像这样:

Camera.Parameters mParam = mCamera.getParameters();
mParam.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED);
mCamera.setParameters(mParam);

嗨阿隆索,不幸的是,我的应用程序的目标设备(S4和S5)不支持FOCUS_MODE_FIXED。然而,这种模式并不将焦点固定在当前焦点上,而是固定在超焦距上。 - Zeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接