在Android上将相机焦点设置为受控固定距离

Ysc*_*sch 8 camera android

我的设备只有两种对焦模式,AUTO和FIXED(根据getSupportedFocusModes()).我想将相机设置为固定焦距'x'(x是我喜欢的任何东西,或者我从相机中得到的任何东西......).(我知道setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED),但这似乎只在最远的设置上修复..)

可以这样做吗?(Android版本4.2.2)

myk*_*laj 9

不试图在这里完全回答这个问题,只是试图给它一些方向.
所以,你需要的是这种操作的驱动程序支持.然后在某些时候,您会要求您的应用程序中的驱动程序设置请求的焦距.

另一个问题是:"如果有人真的需要这种功能吗?".

Android文档说:

public static final String FOCUS_MODE_FIXED
焦点是固定的.如果焦距不可调,相机始终处于此模式.如果相机具有自动对焦功能,则此模式可以固定焦点,通常是超焦距.应用程序不应在此模式下调用autoFocus(AutoFocusCallback).

让我们看看超焦距是多少.

超焦距离
来自维基百科,免费的百科全书

在光学和摄影中,超焦距是一个距离,超过该距离,所有物体都可以被带入"可接受的"焦点.超焦距有两种常用的定义,导致值略有不同:

定义1:超焦距是镜头可以聚焦的最近距离,同时保持物体在无穷远处可接受的清晰度.当镜头聚焦在这个距离时,从超焦距的一半到无限远的所有物体将是可接受的锐利.

定义2:对于聚焦在无限远处的镜头,超焦距是所有物体都可以接受的可见距离的距离.

两种含义之间的区别很少,因为它们具有几乎相同的值.根据第一定义计算的值超过仅从一个焦距到第二定义的值.

由于超焦距是给出最大景深的焦距,因此设置定焦相机的焦点是最理想的距离.

因此,焦点不是设置在尽可能最远的设置上,而是设置为使所有可见对象都可以接受.

回到问题.
如果您恰好是此特定相机固件的开发人员,则可以向驱动程序添加任何所需的IOCTL.但是你仍然需要以某种方式打电话给他们.如果不在Android操作系统中添加其他功能,并进一步重新编译Android本身及其底层Linux内核,则无法实现这一点.
所以看起来你无法实现这个目标,至少不是来自用户空间.