概要
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
では暗転せずにカメラを一時停止する方法が現状見つけられず。