はじめに
composeバージョンは下記です。
Jetpack ComposeでのCameraXの実装を試したのでメモしておきたいと思います。 下の動画のようなイメージです。
ソースはGitHubにおいてます。 https://github.com/kwmt/JetpackComposePlayGround/tree/main/camerax/src/main/java/net/kwmt27/camerax
実行するときはConfigurationをcameraxを選択してから実行してみてください。
CameraXはAndroidViewを使う
現在のところ、CameraXを使うにはAndroidViewを使うしかなさそうです。 以下のようにしました。
usecaseをバインドする
usecaseをバインドしてるところは下記のところです。 使用しているUseCaseは、Preview、ImageAnalysisです。 この部分はいままでのcomposeを使わない場合と同じですね。
RuntimePermissionの実装
カメラはもちろんRuntimePermissionの実装が必要でそれは次のようにやっています。
まず、カメラパーミッションが拒否されたときの画面を作成します。
このとき、設定画面にstartActivityResultで行って、戻ってきたときのイベントを伝えるために callback: () -> Unit
を渡していますので、設定画面から戻ってきたら handler.request
がよばれます。
handler
はPermissionHandler
という自前のクラスを作っていて、そこでカメラパーミッションが許可されてなければ、設定画面に遷移するし、許可されていれば、onGranted
というFlowに通知します。
以上です。
- Previous
Android targetSdkVersionを28から30への変更したときのメモ - Next
Camera2APIでカメラプレビュー中に光センサーの値によってライトを自動でON/OFFにする