Android の Camera2 API を使って カメラのプレビュー画面を表示する
の続きです。
概要
Camera2 API では、多彩な機能が提供されているが。
機種依存性がある。
自分の端末ではどんな機能が使えるのか調べるためのアプリが
Google Play で公開されている。
調べた結果をEメールでアプリの開発者に送信する機能があり、
下記のサイトに収集される。
このアプリは、Github にソースが公開されている。
これを例にして、 カメラの機能を説明する。
Hardware Level
カメラデバイスの全体的な機能のレベル
Integer level = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
reference: INFO_SUPPORTED_HARDWARE_LEVEL
下記の値をとる
CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_xxx
Value | Name | Remarks |
---|---|---|
0 | LIMITED | |
1 | FULL | |
2 | LEGACY | |
3 | LEVEL_3 | |
4 | EXTERNAL | Added in API level 28 |
機能の順序 LEGACY < LIMITED < FULL < LEVEL_3.
カメラ機能 Capabilities
サポートするカメラ機能の一覧
int[] modes = characteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
reference: REQUEST_AVAILABLE_CAPABILITIES
下記の値をとる
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_xxx
Value | Name | Remarks |
---|---|---|
0 | BACKWARD_COMPATIBLE | |
1 | MANUAL_SENSOR | |
2 | POST_PROCESSING | |
3 | RAW | |
4 | REPROCESSING | |
5 | READ_SENSOR_SETTINGS | |
6 | BURST_CAPTURE | |
7 | YUV_REPROCESSING | |
8 | DEPTH_OUTPUT | |
9 | CONSTRAINED_HIGH_SPEED_VIDEO | |
10 | MOTION_TRACKING | Added in API level 28 |
LIMITEDおよびFULLモードのカメラデバイスはOFFモード(マニュアルモード)をサポートする。
自動焦点 Auto Focus
サポートする自動焦点の機能の一覧
int[] mode = characteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES)
reference: CONTROL_AF_AVAILABLE_MODES
下記の値をとる
CameraMetadata.CONTROL_AF_MODE_xxx
Value | Name | Remarks |
---|---|---|
0 | OFF | |
1 | AUTO | |
2 | MACRO | |
3 | CONTINUOUS_VIDEO | |
4 | CONTINUOUS_PICTURE | |
5 | EDOF |
手動焦点
手動焦点に関するパラメータとして、
下記のものが取得できる。
// 最小の焦点距離
float distance = characteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
自動露出 Auto Exposure
サポートする自動露出の機能の一覧
int[] mode = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
reference: CONTROL_AE_AVAILABLE_MODES
下記の値をとる
CameraMetadata.CONTROL_AE_MODE_xxx
Value | Name | Remarks |
---|---|---|
0 | OFF | |
1 | ON | |
2 | ON_AUTO_FLASH | |
3 | ON_ALWAYS_FLASH | |
4 | ON_AUTO_FLASH_REDEYE | |
5 | ON_EXTERNAL_FLASH | Added in API level 28 |
すべてのカメラデバイスはONモード(フラッシュなしの自動露出)をサポートする
FULLモードのカメラデバイスはOFFモード(マニュアルモード)をサポートする。
手動露出
アプリケーションから露光時間(exposure time)、センサ感度(sensor sensitivity)などを制御できる。
手動露出に関するパラメータとして、下記のものが取得できる。
// 露光時間の範囲
Range<Long> range = characteristics.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE);
// 感度の範囲
Range<Integer> range = characteristics.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE);
// 絞りの値の一覧
float[] apertures = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES);
自動ホワイトバランス Auto White Balance
サポートする自動ホワイトバランスの機能の一覧
int[] mode = characteristics.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES)
reference: CONTROL_AWB_AVAILABLE_MODES
下記の値をとる
CameraMetadata.CONTROL_AWB_MODE_xxx
Value | Name | Remarks |
---|---|---|
0 | OFF | |
1 | AUTO | |
2 | INCANDESCENT | |
3 | FLUORESCENT | |
4 | WARM_FLUORESCENT | |
5 | DAYLIGHT | |
6 | CLOUDY_DAYLIGHT | |
7 | TWILIGHT | |
8 | SHADE |
手動ホワイトバランス
ホワイトバランスに関して、取得できるパラメータはないようです。
スクリーンショット
サンプルコードをgithub に公開した。
https://github.com/ohwada/Android_Samples/tree/master/Camera212