相机预览 怎么样才能取消与生命周期的绑定
private fun startCamera(mContext: Context, lifecycle: LifecycleOwner, view: PreviewView) {
val cameraProviderFuture = ProcessCameraProvider.getInstance(mContext)
cameraProviderFuture.addListener({
cameraProvider = cameraProviderFuture.get()
preview = Preview.Builder().build()
changePreView(CameraSelector.LENS_FACING_FRONT,lifecycle,view)
}, ContextCompat.getMainExecutor(mContext))
}
private fun changePreView(lensFacing: Int, lifecycle: LifecycleOwner, view: PreviewView) {
cameraSelector = CameraSelector.Builder().requireLensFacing(lensFacing).build()
try {
cameraProvider?.unbindAll()
camera = cameraProvider?.bindToLifecycle(lifecycle, cameraSelector!!, preview)
preview?.setSurfaceProvider(view.createSurfaceProvider(camera?.cameraInfo))
} catch (exc: Exception) {
Log.e("TAG", "Use case binding failed", exc)
}
}
重写LifecycleOwner 自己控制生命周期的调用就行
可以将changePreView函数修改如下:
private fun changePreView(lensFacing: Int, view: PreviewView) {
cameraSelector = CameraSelector.Builder().requireLensFacing(lensFacing).build()
try {
cameraProvider?.unbindAll()
camera = cameraProvider?.bindToLifecycle(LifecycleOwner {}, cameraSelector!!, preview)
preview?.setSurfaceProvider(view.createSurfaceProvider(camera?.cameraInfo))
} catch (exc: Exception) {
Log.e("TAG", "Use case binding failed", exc)
}
}
望采纳。