我正试图在三星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。
答案 0 :(得分:1)
我打赌你有一个SecurityException
,因为你还没有说过关于运行时权限的话。 S7至少具有Android Marshmallow(API 23),这意味着您必须在运行时请求某些权限(CAMERA
是其中之一),而不是仅在清单文件中声明它。有关详细信息,请阅读Requesting Permissions at Run Time指南。