Camera1.0和Camear2.0的區別
1. Camera2是通過系統服務拿到CameraManager來管理camera裝置物件,camera的一次預覽、拍照都是向請求會話(CaptureSession.StateCallback,攝像頭開啟時由相機裝置的輸出surface組成)傳送一次請求(CaptureRequest.Builder)。需要在它的回撥onConfigured中進行處理,例如預覽,如果不在此方法中寫上CameraCaptureSession.setRepeatingRequest(mCaptureReqBuilder.build(), null, mHandler);那麼預覽就不會成功。
2. 此外,在建立會話,設定
閃關燈的控制方式
Camera API 1.0下 這句程式碼可以得到攝像頭支援的閃光燈模式 List<String> supportedFlashModes = params.getSupportedFlashModes(); 控制閃光燈的方法: params.setFlashMode(Parameters.FLASH_MODE_TORCH);//開啟閃光燈API並沒有詳細說明。
我測試了Parameters.FLASH_MODE_TORCH
Parameters.FLASH_MODE_TORCH : 閃光燈常開
Parameters.FLASH_MODE_ON : 拍照時閃光燈才打開
Camera API 2.0下: 這句程式碼可以用來檢測當前開啟的攝像頭是否支援閃光燈:Boolean flashAvailable = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE); 控制閃光燈的方法: camerasession.setRepeatingRequest(mCameraBuilder.build(),null,null)
但是根據API文件的說明,需要注意的問題大概如下:
1. 只有當android.flash.info.available = = true 時這種控制閃光燈才有效。
2. 會被自動曝光模式(CONTROL_AE_MODE)中的設定給覆蓋。
我測試了幾項:
a) CONTROL_AE_MODE設定為OFF、ON_AUTO_FLASH、ON_AUTO_FLASH_REDEYE、ON_ALWAYS_FLASH時,上述閃光燈控制方式不能開啟。
b) CONTROL_AE_MODE設定為ON或者不設定時,上述閃光燈控制方式能開啟。