ImageCaptureException:不绑定到有效的相机
当前,尝试捕获图片时,我会收到以下异常消息:
androidx.camera.core.ImageCaptureException: Not bound to a valid Camera
Camerax的版本为1.2.0-Alpha01。预览在起作用。我可以看到相机。
感谢任何帮助。先感谢您。
我的方法takephoto:
@SuppressLint("RestrictedApi")
private void takePhoto() {
ImageCapture imageCapture = new ImageCapture.Builder()
.setTargetRotation(Surface.ROTATION_0)
.build();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS", Locale.US);
String name = simpleDateFormat.format(System.currentTimeMillis());
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/CameraX-Image");
}
ImageCapture.OutputFileOptions outputFileOptions = new ImageCapture.OutputFileOptions.Builder(getContentResolver(),
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
contentValues)
.build();
imageCapture.takePicture(outputFileOptions,
ContextCompat.getMainExecutor(this),
new ImageCapture.OnImageSavedCallback() {
@Override
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
Uri savedUri = outputFileResults.getSavedUri();
String msg = "Photo capture succeeded: $savedUri";
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
Log.d(TAG, msg);
}
@Override
public void onError(@NonNull ImageCaptureException exception) {
Log.e(TAG, "${exception.message}", exception);
}
});
}
我的方法开始camera:
private void startCamera() {
ListenableFuture<ProcessCameraProvider> providerListenableFuture = ProcessCameraProvider.getInstance(this);
providerListenableFuture.addListener(() -> {
try {
ImageCapture imageCapture = new ImageCapture.Builder()
.setTargetRotation(Surface.ROTATION_0)
.build();
ProcessCameraProvider cameraProvider = providerListenableFuture.get();
int rotation = viewBinding.viewFinder.getDisplay().getRotation();
Preview preview = new Preview.Builder().setTargetRotation(rotation).build();
preview.setSurfaceProvider(viewBinding.viewFinder.getSurfaceProvider());
CameraSelector cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA;
cameraProvider.unbindAll();
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}, ContextCompat.getMainExecutor(this));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论