Android CameraX Not bound to a valid Camera
造成这个原因的是
imageCapture没有与相机设备进行绑定,下面是绑定的代码
val cameraProviderFuture: ListenableFuture<ProcessCameraProvider> = ProcessCameraProvider.getInstance(this)
val processCameraProvider = cameraProviderFuture.get()
processCameraProvider.bindToLifecycle(this, CameraSelector.DEFAULT_BACK_CAMERA, imageCapture)
本人所写的点击事件和初始化捕获的全部代码如下
//拍照
private fun onClick(){
val imagePath = Environment.getExternalStorageDirectory().absolutePath +"/downloads/test.jpg"
val file:File = File(imagePath);
val outputFileOptions = ImageCapture.OutputFileOptions.Builder(file).build()
//绑定摄像机
imageCapture!!.takePicture(outputFileOptions, ContextCompat.getMainExecutor(this),
object : ImageCapture.OnImageSavedCallback {
override fun onError(error: ImageCaptureException)
{
error.printStackTrace()
}
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
}
})
}
//捕获初始化
private fun capturePicture(){
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.build()
cameraProvider?.bindToLifecycle(lifecycleOwner!!,cameraSelector!!,
imageCapture,imageAnalysis,preview)
val cameraProviderFuture: ListenableFuture<ProcessCameraProvider> = ProcessCameraProvider.getInstance(this)
val processCameraProvider = cameraProviderFuture.get()
processCameraProvider.bindToLifecycle(this, CameraSelector.DEFAULT_BACK_CAMERA, imageCapture)
}