我在Android中使用相机时遇到问题。
在API 25上开发Nougat 7.1.1 SDK。最小目标SDK设置为15.
每次调用时都会抛出错误:
Camera camera = Camera.open();
错误" RuntimeException:无法连接到相机服务",可以从我的模拟器(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());
}
}
}
}
确实检测到了camara(hasCamera == true)。
我之前没有使用Camera2(从API 21开始),因为我希望我的应用可以在API 15之后使用。
我在这里尝试过很多答案,但没有任何效果。请指教!
答案 0 :(得分:1)
如果未添加以下权限,请将以下权限添加到您的清单文件中。
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
重要提示: 发生这种情况是因为您在首次启动时打开了相机,之后您还没有释放它的资源。 确保你应该这样做
camera.stopPreview();
camera.release();
camera = null;
完成使用相机后,您必须执行上述清洁和释放资源的过程。
希望这有帮助。