java.lang.RuntimeException:无法连接到摄像机服务

我试图做一个应用程序,可以打开和closures我的相机闪光灯。 我有atm的代码如下所示:

Camera flash; Camera.Parameters params; flash = Camera.open(); params = flash.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); flash.setParameters(params); 

并在清单xml:

 <permission android:name="android.permission.FLASHLIGHT" android:permissionGroup="android.permission-group.HARDWARE_CONTROLS" android:protectionLevel="normal" /> <permission android:name="android.permission.CAMERA"> </permission> 

每次我运行代码,应用程序崩溃在“flash = Camera.open();” 有这个错误:

java.lang.RuntimeException:无法连接到摄像机服务

我究竟做错了什么?

Solutions Collecting From Web of "java.lang.RuntimeException:无法连接到摄像机服务"

要访问设备相机,您必须像这样在您的Android Manifest中声明CAMERA权限,

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

你可能忘记了在onDestroy调用release

例如:

 @Override protected void onDestroy() { if (mCamera != null) { mCamera.release(); } super.onDestroy(); } 

通常,这个问题是由于缺less相机请求权限,正如其他用户所说的那样。

但是,只要在这里注册另一个原因,如果您尝试使用不存在的cameraID打开相机,则会收到相同的错误

java.lang.RuntimeException:无法连接到摄像机服务

您需要以编程方式在Android 6.x上添加新的请求权限。

  private static final int MY_PERMISSIONS_REQUEST_CAMERA = 555; if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA); } else { IntentIntegrator.forSupportFragment(this).initiateScan(); } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_CAMERA: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { IntentIntegrator.forSupportFragment(this).initiateScan(); } else { FragmentHelper.popFragment(getActivity(), null, null); } } } }