Android camera.open(0)在galaxy s7上返回null

时间:2017-05-13 15:36:04

标签: android

我正试图在三星galaxy s7上打开相机,但它总是返回null。 我在manifest.xml中拥有自己的权限:

<uses-permission android:name="android.permission.CAMERA">
</uses-permission>
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.back" android:required="true" />

这是我想打开它的地方:

 int cameraId = -1;
        int numberOfCameras = Camera.getNumberOfCameras();
        for (int i = 0; i < numberOfCameras; i++) {
            Camera.CameraInfo info = new Camera.CameraInfo();
            Camera.getCameraInfo(i, info);
            if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
                cameraId = i;
                break;
            }
        }

        if(camera == null){
            try{
                camera = Camera.open(cameraId);
                params = camera.getParameters();
            }catch (RuntimeException ex){
                Log.e("Camera Error: ", ex.getMessage());
            }
        }

为什么我总是在Camera.open()上得到null? cameraId为0。

1 个答案:

答案 0 :(得分:1)

我打赌你有一个SecurityException,因为你还没有说过关于运行时权限的话。 S7至少具有Android Marshmallow(API 23),这意味着您必须在运行时请求某些权限(CAMERA是其中之一),而不是仅在清单文件中声明它。有关详细信息,请阅读Requesting Permissions at Run Time指南。