質問: 現在Android Studioでcamera2APIを用いて可視光(Li-Fi)の研究をしています。 ですがLEDを撮影しデータを取得する際にどうしても自動露出とオートフォーカスが邪魔になってしまいます。 ・自動露出 ・オートフォーカス 上記二つの切り方を教えてください。 **仕様** Android Studio3.1 **スマートフォン** SHARP AQUOS API23 HUAWEI P10 API24
回答: `CameraCaptureSession`の`capture`メソッドなどは引数に`CameraRequest`を取ります)。`CameraRequest`には様々なフィールドがあり、`CONTROL_AF_MODE`と`CONTROL_AE_MODE`がそれぞれオートフォーカスと自動露出に対応します。これらを`OFF`にセットすれば無効になります。また、ホワイトバランス調整を含めた3つをまとめて設定できる`CONTROL_MODE`も提供されています。 `CameraDevice`の`createCaptureRequest`)を使うと、それぞれのカメラに適した`CameraRequest.Builder`を生成できるので、これを書き換えてAF等を無効にしていくのがよいでしょう。 Googleのサンプルコードを引用します(コメントは引用者によるもの)。 ``` val captureRequest = session.device.createCaptureRequest( CameraDevice.TEMPLATE_STILL_CAPTURE).apply { addTarget(imageReader.surface) } // ここで captureRequest.set(CONTROL_AF_MODE, OFF) などとする session.capture(captureRequest.build(), object : CameraCaptureSession.CaptureCallback() { ... ```