日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

java定焦点_Android 开发 Camera1_如何使用对焦功能

發布時間:2025/4/5 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java定焦点_Android 开发 Camera1_如何使用对焦功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Camera1的自動對焦還是有一些坑值得開一個篇幅來講解,一般對焦Mode有以下幾種:

Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO 連續自動對焦視頻

Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE? 連續自動對焦圖像

Camera.Parameters.FOCUS_MODE_AUTO 自動對焦(單次)

檢查支持的對焦Mode

有些時候前攝像頭不支持一些對焦模式,所以我們在切換攝像頭后配置攝像就需要檢查一遍支持的對焦模式

List focusModeList =parameters.getSupportedFocusModes();

for (String focusMode : focusModeList){//檢查支持的對焦

if(focusMode.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)){

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);

}else if(focusMode.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)){

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);

}

}

FLASH_MODE_AUTO設置自動對焦Mode

其他對焦模式并沒有上面好說的使用后會一直自動對焦,但是FLASH_MODE_AUTO對焦比較獨特,它其實調用一次才觸發一次的對焦.

Camera.Parameters parameters =mCamera.getParameters();

parameters.setFocusMode(Camera.Parameters.FLASH_MODE_AUTO);//對焦設置為自動//其他參數配置略...

mCamera.setParameters(parameters);//添加參數

很簡單在配置Camera1的時候調用setFocusMode(Camera.Parameters.FLASH_MODE_AUTO) 實現自動對焦

啟用自動對焦

在上面將對焦設置為自動模式后,并不是真的就自動對焦(自動對焦的意思其實是當前屏幕中心的畫面自動對焦),所以我們需要觸發一次對焦.

mCamera.setPreviewTexture(surface);

mCamera.startPreview();

mCamera.autoFocus(newCamera.AutoFocusCallback() {

@Overridepublic void onAutoFocus(booleansuccess, Camera camera) {

}

});

注意!對焦是需要在預覽開始之后才能調用的,否則報錯.以上設置一次autoFocus 就等于對焦一次.注意!是只對焦一次! 它不是一直在對焦!

FLASH_MODE_AUTO實現主動對焦和被動對焦的思路

被動對焦的思路

被動對焦的思路很簡單,用一個Button或者點擊預覽View進行一次對焦,所以,正常開發的情況下,需要使用一個布爾值來判斷當前是不是在預覽狀態.

主動對焦

也很簡單寫一個Handler循環就行了,我下面的例子就是每隔2秒對焦一次

private Handler mHandler = newHandler(){

@Overridepublic voidhandleMessage(Message msg) {super.handleMessage(msg);switch(msg.what){case 0x01:

mCamera.autoFocus(newCamera.AutoFocusCallback() {

@Overridepublic void onAutoFocus(booleansuccess, Camera camera) {

}

});

mHandler.sendEmptyMessageDelayed(0x01,2*1000);break;default:break;

}

}

mTextureview.setSurfaceTextureListener(newTextureView.SurfaceTextureListener() {

@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture surface, int width, intheight) {

initCamera();

initCameraConfig();try{

mCamera.setPreviewTexture(surface);

mCamera.startPreview();

mHandler.sendEmptyMessage(0x01);

}catch(IOException e) {

e.printStackTrace();

}

}

@Overridepublic void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, intheight) {

}

@Overridepublic booleanonSurfaceTextureDestroyed(SurfaceTexture surface) {return false;

}

@Overridepublic voidonSurfaceTextureUpdated(SurfaceTexture surface) {

}

});

總結

以上是生活随笔為你收集整理的java定焦点_Android 开发 Camera1_如何使用对焦功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。