Android开发 摄像头自动聚焦完美实现--------------续上http://blog.csdn.net/yanzi1225627/article/detai
Android开发 摄像头自动聚焦完美实现 --------------续上
http://blog.csdn.net/yanzi1225627/article/details/7926994前文已经实现了自动聚焦,但末尾遗留了一个小问题。经我研究发现,是我程序里面的自动聚焦所放的位置有问题。原来只在按下预览按钮,会执行initCamera,但当连续两次按预览后,程序就会没有入口了。也就是第二次if(myCamera!=null && !isView)是不满足的,第一次按预览之后,myCamera对象已经对创建,且isView=true,因此我增加了一个if判断这种情况。当myCamera创建后,且正在预览,如果这个时候再次按下预览,就会再次自动聚焦。源码如下:
public void initCamera(){if(myCamera == null && !isView){myCamera = Camera.open();Log.i(TAG, "camera.open");}if(myCamera != null && !isView) {try {myParameters = myCamera.getParameters();myParameters.setPictureFormat(PixelFormat.JPEG);myParameters.setPreviewSize(1280, 720);//myParameters.setFocusMode("auto");myParameters.setPictureSize(2048, 1152); //1280, 720myParameters.set("rotation", 90);myCamera.setDisplayOrientation(90);myCamera.setParameters(myParameters);myCamera.setPreviewDisplay(mySurfaceHolder);myCamera.startPreview();isView = true;myCamera.autoFocus(mAutoFocusCallback);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();Toast.makeText(TestPhotoActivity.this, "初始化相机错误",Toast.LENGTH_SHORT).show();}}if(myCamera != null && isView)myCamera.autoFocus(mAutoFocusCallback);}
