Android實現(xiàn)手機攝像頭的自動對焦
更新時間:2016年11月08日 15:06:05 作者:m2yy
這篇文章主要為大家詳細介紹了Android實現(xiàn)手機攝像頭的自動對焦的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
如何實現(xiàn)Android相機的自動對焦,而且是連續(xù)自動對焦的。當然直接調(diào)用系統(tǒng)相機就不用說了,那個很簡單的。下面我們主要來看看如如何自己實現(xiàn)一個相機,并且實現(xiàn)自動連續(xù)對焦。
代碼如下:
public class MainActivity extends Activity { private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean flag = false; private String fileUrl=""; Camera camera; Camera.Parameters parameters; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = (SurfaceView) findViewById(R.id.surfaceView1); Button button=(Button) findViewById(R.id.takepicture); surfaceHolder = surfaceView.getHolder(); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceHolder.setKeepScreenOn(true); surfaceView.setFocusable(true); surfaceView.setBackgroundColor(TRIM_MEMORY_BACKGROUND); surfaceHolder.addCallback(new Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub camera.stopPreview(); camera.release(); camera=null; } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub if(null==camera){ camera=Camera.open(); try { camera.setPreviewDisplay(surfaceHolder); initCamera(); camera.startPreview(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){ //實現(xiàn)自動對焦 camera.autoFocus(new AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { if(success){ initCamera();//實現(xiàn)相機的參數(shù)初始化 camera.cancelAutoFocus();//只有加上了這一句,才會自動對焦。 } } }); } }); } //相機參數(shù)的初始化設置 private void initCamera() { parameters=camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); //parameters.setPictureSize(surfaceView.getWidth(), surfaceView.getHeight()); // 部分定制手機,無法正常識別該方法。 parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1連續(xù)對焦 setDispaly(parameters,camera); camera.setParameters(parameters); camera.startPreview(); camera.cancelAutoFocus();// 2如果要實現(xiàn)連續(xù)的自動對焦,這一句必須加上 } //控制圖像的正確顯示方向 private void setDispaly(Camera.Parameters parameters,Camera camera) { if (Integer.parseInt(Build.VERSION.SDK) >= 8){ setDisplayOrientation(camera,90); } else{ parameters.setRotation(90); } } //實現(xiàn)的圖像的正確顯示 private void setDisplayOrientation(Camera camera, int i) { Method downPolymorphic; try{ downPolymorphic=camera.getClass().getMethod("setDisplayOrientation", new Class[]{int.class}); if(downPolymorphic!=null) { downPolymorphic.invoke(camera, new Object[]{i}); } } catch(Exception e){ Log.e("Came_e", "圖像出錯"); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- android開發(fā)之調(diào)用手機的攝像頭使用MediaRecorder錄像并播放
- Android開發(fā)教程之調(diào)用攝像頭功能的方法詳解
- Android實現(xiàn)調(diào)用攝像頭進行拍照功能
- Android實現(xiàn)調(diào)用攝像頭拍照與視頻功能
- Android調(diào)用前后攝像頭同時工作實例代碼
- Android實現(xiàn)調(diào)用攝像頭
- Android調(diào)用系統(tǒng)攝像頭拍照并顯示在ImageView上
- Android實現(xiàn)調(diào)用攝像頭和相冊的方法
- Android讀取本地圖庫與調(diào)用攝像頭拍攝
- Android調(diào)用手機攝像頭的方法
相關文章
Android賬號注冊實現(xiàn)點擊獲取驗證碼倒計時效果
這篇文章主要為大家詳細介紹了Android賬號注冊過程中實現(xiàn)點擊獲取驗證碼倒計時效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05Flutter-AnimatedWidget組件源碼示例解析
這篇文章主要為大家介紹了Flutter-AnimatedWidget組件源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06