在我的Android应用中,焦点模式设置为FOCUS_MODE_CONTINUOUS_PICTURE.
。以下是一些相关代码:
private Camera.AutoFocusCallback _cbAutoFocus = new Camera.AutoFocusCallback() {
private int _count = 0;
@Override
public void onAutoFocus(boolean success, Camera camera) {
if (success) {
_count++;
if ((_count % 500) == 0) {
Log.d("MyCam Focus", Integer.toString(_count));
}
_camera.cancelAutoFocus();
}
_camera.autoFocus(_cbAutoFocus);
}
};
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
try {
if (this._camera != null) {
this._camera.setPreviewDisplay(holder);
this._camera.startPreview();
this._camera.autoFocus(this._cbAutoFocus);
}
}catch(Exception e) {
Log.e("Camera Surface change", e.getMessage());
}
}
当我将相机移动到某些打印文本上时,相机似乎会自动对焦一段时间。然而,过了一段时间,它停止了聚焦,我在onAutoFocus
代码中没有成功。想知道是否有人有任何见解。问候。
答案 0 :(得分:0)
您是否在API documentation中看到了这一点?:
应用程序可以在此模式下调用autoFocus(AutoFocusCallback)。如果 自动对焦是在扫描过程中,焦点回调将 完成后返回。如果自动对焦未扫描,则焦点 callback将立即返回一个指示是否的布尔值 焦点是否尖锐。然后,应用可以决定是否要这样做 立即拍照或将对焦模式更改为自动,和 运行完整的自动对焦循环。 焦点位置被锁定 自动对焦调用。如果应用程序想要恢复连续对焦, 必须调用cancelAutoFocus。重新开始预览将不会恢复 连续自动对焦。停止连续聚焦,应用程序 应将对焦模式更改为其他模式。
似乎在调用autoFocus
方法时,自动对焦被锁定。致电cancelAutoFocus
恢复自动对焦。
在onAutoFocus中,在方法结束时(无论成功与否),都会调用autoFocus
,无论摄像机是否进一步移动,都会聚焦,然后锁定焦点。这是故意的吗?
答案 1 :(得分:0)
事实证明,即使设备支持,FOCUS_MODE_CONTINUOUS_PICTURE或FOCUS_MODE_CONTINUOUS_VIDEO也不会始终有效。似乎最好使用FOCUS_MODE_AUTO并在每次需要关注时手动调用autofocus()
。