【发布时间】:2017-10-01 06:29:17
【问题描述】:
我在 Android 中使用相机时遇到问题。
在 API 25 Nougat 7.1.1 SDK 上进行开发。最小目标 SDK 设置为 15。
每次调用都会报错:
Camera camera = Camera.open();
出现错误“RuntimeException: Fail to connect to camera service”,可以从我的模拟器中看到(Nexus 5X API 25 Android 7.1.1)
在真实设备 (Android 5.1.1) 上测试相机功能也不起作用 - 完全相同的问题。
代码如下:
import android.hardware.Camera;
...
boolean hasCamera = false;
private boolean hasCamera(Context context) {
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
hasCamera = hasCamera(this);
if(!hasCamera) {
takePhotoButton.setText("No Camera Found");
takePhotoButton.setEnabled(false);
}
}
private class TakePhotoButtonListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if(hasCamera) {
try {
Camera camera = Camera.open();
camera.startPreview();
camera.takePicture(
null,
null,
new CameraPictureCallbackJPEG());
} catch (Exception e) {
Log.i("Error", e.getMessage());
}
}
}
}
确实检测到了摄像头(hasCamera == true)。
我不再使用 Camera2(从 API 21 开始),因为我希望我的应用能够在 API 15 及以上版本上运行。
我在这里尝试了很多答案,但没有任何效果。请指教!
【问题讨论】:
-
权限问题?
-
尝试重启设备。我通常会在某些应用获取相机但没有释放它时看到这种情况。
-
您能否发布错误的堆栈跟踪信息,以帮助您更好地找出问题的解决方案。
标签: java android android-camera android-camera-intent android-camera2