如何打开任何Android设备前置摄像头?

时间:2016-10-25 10:36:15

标签: android camera android-camera android-camera-intent

我想在我的应用程序中打开我的前置摄像头,但我无法使用相同的代码打开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);

这是我正在使用的代码,但对许多设备都不起作用

1 个答案:

答案 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(),   否则它将保持锁定状态并且对其他人不可用   应用。 因此您必须重启设备才能处理此异常