Android相机自动对焦在一段时间后停止工作

时间:2016-04-26 18:58:23

标签: android android-camera autofocus

在我的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代码中没有成功。想知道是否有人有任何见解。问候。

2 个答案:

答案 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()