Android實(shí)現(xiàn)手機(jī)攝像頭的自動(dòng)對(duì)焦
如何實(shí)現(xiàn)Android相機(jī)的自動(dòng)對(duì)焦,而且是連續(xù)自動(dòng)對(duì)焦的。當(dāng)然直接調(diào)用系統(tǒng)相機(jī)就不用說了,那個(gè)很簡(jiǎn)單的。下面我們主要來看看如如何自己實(shí)現(xiàn)一個(gè)相機(jī),并且實(shí)現(xiàn)自動(dòng)連續(xù)對(duì)焦。
代碼如下:
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){ //實(shí)現(xiàn)自動(dòng)對(duì)焦 camera.autoFocus(new AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { if(success){ initCamera();//實(shí)現(xiàn)相機(jī)的參數(shù)初始化 camera.cancelAutoFocus();//只有加上了這一句,才會(huì)自動(dòng)對(duì)焦。 } } }); } }); } //相機(jī)參數(shù)的初始化設(shè)置 private void initCamera() { parameters=camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); //parameters.setPictureSize(surfaceView.getWidth(), surfaceView.getHeight()); // 部分定制手機(jī),無法正常識(shí)別該方法。 parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1連續(xù)對(duì)焦 setDispaly(parameters,camera); camera.setParameters(parameters); camera.startPreview(); camera.cancelAutoFocus();// 2如果要實(shí)現(xiàn)連續(xù)的自動(dòng)對(duì)焦,這一句必須加上 } //控制圖像的正確顯示方向 private void setDispaly(Camera.Parameters parameters,Camera camera) { if (Integer.parseInt(Build.VERSION.SDK) >= 8){ setDisplayOrientation(camera,90); } else{ parameters.setRotation(90); } } //實(shí)現(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", "圖像出錯(cuò)"); } } @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; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android開發(fā)之調(diào)用手機(jī)的攝像頭使用MediaRecorder錄像并播放
- Android開發(fā)教程之調(diào)用攝像頭功能的方法詳解
- Android實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能
- Android實(shí)現(xiàn)調(diào)用攝像頭拍照與視頻功能
- Android調(diào)用前后攝像頭同時(shí)工作實(shí)例代碼
- Android實(shí)現(xiàn)調(diào)用攝像頭
- Android調(diào)用系統(tǒng)攝像頭拍照并顯示在ImageView上
- Android實(shí)現(xiàn)調(diào)用攝像頭和相冊(cè)的方法
- Android讀取本地圖庫(kù)與調(diào)用攝像頭拍攝
- Android調(diào)用手機(jī)攝像頭的方法
相關(guān)文章
Android賬號(hào)注冊(cè)實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了Android賬號(hào)注冊(cè)過程中實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android的Service應(yīng)用程序組件基本編寫方法
Service是一個(gè)android 系統(tǒng)中的應(yīng)用程序組件,它跟Activity的級(jí)別差不多,但是他沒有圖形化界面,不能自己運(yùn)行,只能后臺(tái)運(yùn)行,Service通常用來處理一些耗時(shí)比較長(zhǎng)的操作2012-12-12使用Flutter開發(fā)一個(gè)圖片UI組件的代碼示例
在移動(dòng)應(yīng)用開發(fā)中,圖片展示是一個(gè)常見的需求,為了滿足不同場(chǎng)景的圖片展示需求,我們可以開發(fā)一個(gè)靈活配置的圖片UI組件,本文將介紹如何使用Flutter開發(fā)一個(gè)圖片UI組件,并提供了豐富的配置選項(xiàng),需要的朋友可以參考下2023-09-09Flutter-AnimatedWidget組件源碼示例解析
這篇文章主要為大家介紹了Flutter-AnimatedWidget組件源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06