在 Android 中设置相机焦距

Setting Camera Focus Distance in Android

在手动模式下,我的 Xperia XA (Sony F3113) 上的相机应用程序允许我使用滑块设置后置摄像头的焦距。 (参见屏幕截图 here。)

有什么方法可以让我看到或 fiddle 应用程序用来执行此操作的代码?

有什么方法可以在我自己的应用程序中设置焦距(不是自动对焦)吗?

谢谢!!!

注意 1:我认为 Camera2 API 不是这个 phone 的选项。 (如有错误请指正)

注2:我的问题(以及最终意图)与this非常相似,一直没有得到圆满的回答。

除非设备支持 camera2 功能 MANUAL_SENSOR, there is no standard way to do manual focus. If that capability is supported, then you can just use LENS_FOCUS_DISTANCE 来改变焦点。

如果未列出,则可能是制造商为焦距控制添加了一些自定义控件;如果设备是LEGACY camera, it'll be a custom android.hardware.Camera.Parameters string, very likely. If you knew the control value, you could use Parameters.set()调整一下。

您可以通过 运行 启用默认应用、调整手动对焦,并在应用仍处于活动状态时使用 adb 运行 adb shell dumpsys media.camera,并查看列出的当前相机参数值。除了实际的焦距控制,可能还有多个设置需要调整(比如AF模式),注意。

当然,这仅适用于此特定设备;由于存在未记录的接口,它们可能会根据 OEM、设备甚至 OS 更新而改变。所以依赖他们是很脆弱的。