Jetpack ComposeでCameraXを実装する

Posted by kwmt27 on Sat, Jun 12, 2021

はじめに

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がよばれます。

handlerPermissionHandlerという自前のクラスを作っていて、そこでカメラパーミッションが許可されてなければ、設定画面に遷移するし、許可されていれば、onGrantedというFlowに通知します。

以上です。



comments powered by Disqus