android java lang runtimeexception无法连接到相机服务

我目前正在开发/closures手电筒。 我得到这个错误java.lang.RuntimeException: Fail to connect to camera service我不知道为什么这个错误发生。 我提到了很多解决scheme,但是我的问题仍然没有解决。 当手电筒打开时,错误不会发生,但当手电筒closures时会发生错误。

我的代码主要代码 。

我的清单许可:

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

尝试这个…

  static Camera camera = null; 

在上面宣布。

  try{ if(clickOn == true) { clickOn = false; camera = Camera.open(); Parameters parameters = camera.getParameters(); parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); camera.startPreview(); remoteViews.setViewVisibility(R.id.button1, View.GONE); remoteViews.setViewVisibility(R.id.button2, View.VISIBLE); localAppWidgetManager.updateAppWidget(componentName, remoteViews); } else { clickOn = true; camera.stopPreview(); camera.release(); camera = null; remoteViews.setViewVisibility(R.id.button1, View.VISIBLE); remoteViews.setViewVisibility(R.id.button2, View.GONE); localAppWidgetManager.updateAppWidget(componentName, remoteViews); } } catch(Exception e) { Log.e("Error", ""+e); } 

我有同样的问题,没有答案在这里解决,所以解决后,我join了我的解决方法。 这适用于支持设置每个应用程序权限(自棉花糖,6.0以来)的新的Android版本。 相机的权限可以禁用,应该从应用程序设置启用。 设置 – >应用程序 – > [你的应用程序] – >权限

有关此更多信息: http : //developer.android.com/training/permissions/requesting.html

我也看到这个错误:

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

同时尝试使用手电筒应用程序。 事实certificate,我对我的权限有些sl and,并将它们复制到manifest.xml文件中的应用程序块的主体中​​。 所以你真的需要服从以下语法:

http://developer.android.com/guide/topics/manifest/manifest-element.html

否则,在Camera.open()调用中,应用程序将失败,服务连接失败。 它应该看起来像这个问题的基础上你的权限:

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

确保您的许可和function列表仅包含在清单部分,而不是埋在应用程序部分!

如果您没有为您的应用程序启用相机权限,则可能在Android 6.0中出现此问题。 从Android 6.0开始,您可以处理应用程序的权限天气,您可以授予或不授予应用程序的特定权限。

因此,如果尚未启用settings->apps->your_app->enable camera permission则需要从settings->apps->your_app->enable camera permission

如果您尝试使用不存在的cameraID打开相机,则会收到相同的错误(java.lang.RuntimeException:无法连接到相机服务)

看看你的代码在这个块

 camera.setParameters(parameters); camera.stopPreview(); camera.release(); camera = null; 

呼叫release()释放相机供其他应用程序使用。 应用程序应立即在onPause()释放相机(并在onResume().重新打开onResume().

在上面的代码发布后立即你把零相机

如果您的操作系统版本是6.0或更高版本试试这个,希望这会有所帮助。

 public class RequestUserPermission { private Activity activity; // Storage Permissions private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA }; public RequestUserPermission(Activity activity) { this.activity = activity; } public void verifyStoragePermissions() { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE ); } } } **//CALL FROM YOUR ACTIVITY** RequestUserPermission requestUserPermission = new RequestUserPermission(this); requestUserPermission.verifyStoragePermissions(); 

嗨,我希望你正在处理一个types的应用程序或闪光有关的事情,有很多讨论这之前,这里有一些有用的链接和教程,以实现您的需要,请通过他们希望他们可以帮助你

如何在Android中以编程方式打开相机闪光灯?

http://www.androidhive.info/2013/04/android-developing-flashlight-application/

http://www.compiletimeerror.com/2013/08/how-to-turn-onoff-camera-led-flashlight.html#.U4WH5Xbc3o4

http://android.programmerguru.com/android-flashlight-example/

我可以find这个问题的简单答案是我没有要求相机的权限,这就是为什么默认摄像头权限不适用于我的应用程序在棉花糖设备。 我只是在启动相机之前添加了相机的权限检查,一切正常。

尝试使用这一行,当你退出应用程序:

 System.exit(0); 

我从某处获得了手电筒应用程序的代码。 它使用System.exit(0)来closures应用程序。 我删除它,知道这不是一个好的做法。 然后我开始接收这些错误。 我尝试了接受的答案的解决scheme,但后来我开始接受一些其他的错误。 所以,而不是解决它们,我只是把这个System.exit(0)行回来。 而且,它开始正常工作。 我知道这不是一个好方法,但对于一个小手电的应用程序,你可以尝试这个快速的解决scheme。

如果你所有的代码都可以,那么你应该检查是否有任何其他应用程序使用你的相机。 那么你应该closures当前使用你的相机的其他应用程序。

一旦你从相机回来,你需要stopPreview()release() ,以便其他应用程序可以访问它。 将“Camera”类设置为静态,并在onPause()中将其引用为null 。 这解决了我的问题。

试试看:

  public class CameraPhotoCapture extends Activity{ static Camera mcamera = null; @Override protected void onPause() { // TODO Auto-generated method stub if (mcamera != null) { mcamera.stopPreview(); mcamera.release(); mcamera = null; Log.d(DEBUG_TAG, "releaseCamera -- done"); } super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub if (mcamera != null) { Camera.open(); Log.d(DEBUG_TAG, "openCamera -- done"); } super.onResume(); } }