java – Android自动焦点在创建摄像机视图后不起作用

java – Android自动焦点在创建摄像机视图后不起作用,第1张

概述我正在尝试创建自己的相机视图,除了自动对焦之外我还能正常工作,我似乎无法弄清楚为什么它不起作用.这是我的CameraView. java代码 public class CameraView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder surface_Holder; pri 我正在尝试创建自己的相机视图,除了自动对焦之外我还能正常工作,我似乎无法弄清楚为什么它不起作用.这是我的Cameraview. java代码
public class Cameraview extends SurfaceVIEw implements SurfaceHolder.Callback {    private SurfaceHolder surface_Holder;    private  Camera main_Camera;    boolean on;    public Cameraview(Context context,Camera camera){        super(context);        main_Camera = camera;        main_Camera.setdisplayOrIEntation(90);        surface_Holder = getHolder();        surface_Holder.addCallback(this);        surface_Holder.setType(SurfaceHolder.SURFACE_TYPE_norMAL);    }    public boolean isOn(){        return on;    }    @OverrIDe    public voID surfaceCreated(SurfaceHolder holder) {        try{            main_Camera.setPrevIEwdisplay(holder);            main_Camera.startPrevIEw();        }catch (Exception e){            Log.d("Error","Canmera error on surfaceCreated" + e.getMessage());            main_Camera.release();            main_Camera = null;        }    }    @OverrIDe    public voID surfaceChanged(SurfaceHolder holder,int format,int wIDth,int height) {        if(holder.getSurface()==null){            return;        }        try{            main_Camera.stopPrevIEw();        }catch (Exception e){        }        try{            main_Camera.setPrevIEwdisplay(surface_Holder);            main_Camera.startPrevIEw();        }catch (IOException e){            Log.d("Error","Camera error on surfaceChanged " + e.getMessage());        }    }    @OverrIDe    public voID surfaceDestroyed(SurfaceHolder holder) {        main_Camera.setPrevIEwCallback(null);        main_Camera.stopPrevIEw();        main_Camera.release();        main_Camera= null;    }}

在我的清单中,我有以下内容:

<uses-permission androID:name="androID.permission.CAMERA" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-feature androID:name="androID.harDWare.camera" /><uses-feature androID:name="androID.harDWare.camera.autofocus" />
解决方法 如果你添加< uses-feature androID:name =“androID.harDWare.camera.autofocus”/>你的清单并不意味着相机会进行自动对焦.这意味着您允许您的应用程序使用相机硬件或处理自动对焦的软件.

The purpose of a declaration is to inform any external entity of the set of harDWare and software features on which your application depends.

要将相机设置为焦点,可以将此方法添加到Cameraview类:

private voID setFocus(String mParameter) {    Camera.Parameters mParameters = mCamera.getParameters();    mParameters.setFocusMode(mParameter);    mCamera.setParameters(mParameters);}

然后在surfaceChanged()中调用此方法,如下所示:

public voID surfaceChanged(SurfaceHolder holder,int w,int h) {    ...//your code here    // Set focus mode to continuous picture    setFocus(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);    // Start camera prevIEw    mCamera.startPrevIEw();}

您可以选择以下焦点参数:

String FOCUS_MODE_auto auto-focus mode.

String FOCUS_MODE_CONTINUOUS_PICTURE Continuous auto focus mode
intended for taking pictures.

String FOCUS_MODE_CONTINUOUS_VIDEO Continuous auto focus mode intended
for vIDeo recording.

String FOCUS_MODE_EDOF Extended depth of fIEld (EDOF).

String FOCUS_MODE_FIXED Focus is fixed.

String FOCUS_MODE_INFINITY Focus is set at infinity.

String FOCUS_MODE_MACRO Macro (close-up) focus mode.

总结

以上是内存溢出为你收集整理的java – Android自动焦点在创建摄像机视图后不起作用全部内容,希望文章能够帮你解决java – Android自动焦点在创建摄像机视图后不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1148372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存