我想在我的应用程序中打开我的前置摄像头,但我无法使用相同的代码打开2个不同的设备。
我应该如何编码打开任何设备前置摄像头?
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(cameraIntent, REGISTRO_PONTO_IMAGE_CAM);
这是我正在使用的代码,但对许多设备都不起作用。
答案 0 :(得分:0)
尝试此功能,而不是从Intent打开前置摄像头
private Camera openFrontFacingCamera() {
int cameraCount = 0;
Camera camera = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
try {
camera = Camera.open(camIdx);
} catch (RuntimeException e) {
Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
}
}
}
return camera;
}
AndroidManifest.xml
中的不要忘记添加这些权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
如果代码抛出
RunTimeException
连接时发生错误 相机:这意味着其他一些应用程序正在使用相机硬件 引用并没有发布它和android只允许一个应用程序 同时使用harware,所以在使用完相机后尝试调用release(), 否则它将保持锁定状态并且对其他人不可用 应用。 因此您必须重启设备才能处理此异常 。