以下の内容はhttps://android-java.hatenablog.jp/entry/camerax-manualmode-kotlinより取得しました。


【Android開発】CameraX をマニュアルモードにする手順 - Kotlin

CameraX は基本的に「露出」「ホワイトバランス」「フォーカス」が自動になりますが、「Camera2CameraControl」を取得して「CaptureRequestOptions」で「CONTROL_MODE_OFF」をリクエストすることで、「露出」「ホワイトバランス」「フォーカス」を手動設定(マニュアル設定)にすることができます。

なお、CameraXを使用してのカメラアプリの作り方は以下の記事を参考にしてください。

android-java.hatenablog.jp

android-java.hatenablog.jp

~ 手順 ~

それでは、手順を解説します。

① CameraX で Camera2 のコントロールを利用できるようにする「camera2CameraControl」を宣言します。

private lateinit var camera2CameraControl: Camera2CameraControl

② キャプチャーにリクエストするための「captureRequestOptionsBuilder」を宣言します。

private lateinit var captureRequestOptionsBuilder: CaptureRequestOptions.Builder

camera の CameraControl を「camera2CameraControl」にセットします。これで Camera2 のリクエストが Camer X で利用可能になります。

camera2CameraControl = Camera2CameraControl.from(camera.cameraControl)

camera は以下のように「cameraProvider.bindToLifecycle ( )」から取得します。

camera = cameraProvider.bindToLifecycle(
this,
cameraSelector,
preview3,
imageCapture,
videoCapture
)

④ キャプチャーリクエストビルダー(captureRequestOptionsBuilder)をインスタンス化し、以下をセットしてビルドします。

  • CONTROL_MODE ⇒ コントロールモード
  • CONTROL_MODE_OFF ⇒ オフにする
captureRequestOptionsBuilder = CaptureRequestOptions.Builder()
.setCaptureRequestOption(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_OFF)
captureRequestOptions = captureRequestOptionsBuilder.build()

⑤ ③で作成した「camera2CameraControl」に④のリクエストをセットします。これで、露出、ホワイトバランス、フォーカスがマニュアルモードになります。

camera2CameraControl.setCaptureRequestOptions(captureRequestOptions)

備考・まとめ

オートモードにするには、手順の④で以下をセットします。

  • CONTROL_MODE ⇒ コントロールモード
  • CONTROL_MODE_ON ⇒ オンにする

ご紹介した方法を応用することで CameraX でも Camera2 に近い細かいコントロールができるようになります。

END




以上の内容はhttps://android-java.hatenablog.jp/entry/camerax-manualmode-kotlinより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14