2
4

More than 3 years have passed since last update.

CameraX でカメラを一時停止する方法

Last updated at Posted at 2020-09-07

概要

CameraX で、alpha05 -> beta04 にあげる時に、カメラを一時停止する方法について試行錯誤したメモ

Camera を停止する方法

// UseCase を指定して unbind
CameraX.unbind(preview)
// 全ての UseCase を unbind
CameraX.unbindAll()
// LifecycleCamera に対して unbind(beta04時点)
cameraProvider?.unbindAll()

課題

カメラは停止されるが、復帰する際に画面が暗転してしまう

画面が暗転する問題への対処方法

androidx.camera:camera-core:1.0.0-alpha05 までは下記の方法で Preview.OnPreviewOutputUpdateListener を入れ替えることで、復帰時に画面が暗転せずにカメラの一時停止が実現できていた。

private var onPreviewOutputUpdateListener: Preview.OnPreviewOutputUpdateListener? = null

// resume
fun resumeCamera() {
  preview.onPreviewOutputUpdateListener = onPreviewOutputUpdateListener
}

// pause
fun pauseCamera() {
  onPreviewOutputUpdateListener = preview.onPreviewOutputUpdateListener
  preview.onPreviewOutputUpdateListener = null
}

beta04 で試した方法(失敗)

Preview.setSurfaceProvider() を切り替える

private var surfaceProvider: Preview.SurfaceProvider? = null

// resume
fun resumeCamera() {
  preview?.setSurfaceProvider(surfaceProvider)
}

// pause
fun pauseCamera() {
  preview?.setSurfaceProvider(null)
}

結果

androidx.camera:camera-core:1.0.0-alpha05 までは復帰時に暗転せずにカメラを一時停止する方法があったが、androidx.camera:camera-core:1.0.0-beta04 では暗転せずにカメラを一時停止する方法が現状見つけられず。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4