如何自动对焦Android相机?

Ale*_*rov 54 android android-camera

我想在相机保持不动时自动对焦Android相机.我正在寻找教程或示例如何做或至少小样本,显示我可以用来挂钩这些事件的类.

luk*_*009 118

对我来说,这是一种享受:

//set camera to continually auto-focus
Camera.Parameters params = c.getParameters();
//*EDIT*//params.setFocusMode("continuous-picture");
//It is better to use defined constraints as opposed to String, thanks to AbdelHady
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
c.setParameters(params);
Run Code Online (Sandbox Code Playgroud)

  • 最小的SDK 14为此.有没有办法让Min SDK <14? (2认同)

dco*_*coz 62

尝试使用Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEOCamera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE.见下文:

Camera.Parameters params = camera.getParameters();
if (params.getSupportedFocusModes().contains(
    Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
  params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
camera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)

在尝试使用之前测试手机是否支持您选择的模式非常重要,否则setParameters()会引发运行时异常.(编辑代码现在正常工作)


Jen*_*ter 19

以下代码适合我.

设置自动对焦(预览类):

Parameters params = camera.getParameters();
params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
//some more settings
camera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)

如果自动对焦准备就绪,请调用相机拍摄照片(活动类别):

public void butClick(View v){
    preview.camera.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
            if(success){
                camera.takePicture(shutterCallback, rawCallback, jpegCallback);
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

获取图片(活动类):

PictureCallback jpegCallback = new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        //do something
    }
};
Run Code Online (Sandbox Code Playgroud)


Kgr*_*ver 7

看起来你应该连续自动对焦,如这里所讨论的.

这里有一个问题,你可以参考.