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自动焦点在创建摄像机视图后不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)