【问题标题】:Android Fail to Connect to Camera Service?Android无法连接到相机服务?
【发布时间】:2016-01-14 17:50:15
【问题描述】:

我正在制作一个需要使用相机闪光灯的应用。我的代码将在这篇文章的下方,但是当我尝试打开相机时,我得到了一个java.lang.RuntimeException: Fail to connect to camera service。调用Camera.open(); 方法时出现错误。

Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();

我试过重启手机,关闭所有应用,还是一样的错误。

有没有办法在打开相机之前释放/关闭相机?我不知道你会如何关闭一个空对象。

屏幕方向不是问题,因为应用只允许垂直方向。

默认的相机应用可以工作,但这个应用不行。

错误(完整):

    java.lang.RuntimeException: Fail to connect to camera service
        at android.hardware.Camera.native_setup(Native Method)
        at android.hardware.Camera.<init>(Camera.java:319)
        at android.hardware.Camera.open(Camera.java:292)
        at com.bensuniverse.flashlightx.processes.CameraHandler.toggleFlash(CameraHandler.java:21)
        at com.bensuniverse.flashlightx.MainActivity$1.onClick(MainActivity.java:78)
        at android.view.View.performClick(View.java:4106)
        at android.view.View$PerformClick.run(View.java:17052)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5059)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
        at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 在尝试打开之前先尝试声明相机,如下:static Camera camera = null
  • 您是否在清单中添加了所需的权限?你可以发布堆栈跟踪吗? Logcat 输出?
  • 添加了所有权限,因为我在 Nexus 6P 上使用 Camera2 没有问题。我正在使用我的旧手机进行向后兼容。我用完整的错误更新了帖子。上面的logcat没有什么大不了的。
  • 如果您的设备“丢失”了相机并且无法打开库存相机应用程序,您只需重新启动手机即可。如果另一个应用可以打开相机,你可能忘记调用 camera.release()
  • 如何在打开相机前拨打camera.release()?普通的相机应用程序可以正常工作,但该应用程序在重新启动手机时仍然崩溃。

标签: android camera android-camera


【解决方案1】:

确保您正确释放相机对象。如果您尝试重新打开已打开的相机对象,那么它将因您在堆栈跟踪中提到的错误而崩溃:

Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
camera.startPreview();  

// Stop camera preview and release it.
camera.stopPreview();
camera.release();

【讨论】:

    【解决方案2】:

    我也遇到了类似的问题,原因是我的另一个应用程序使用了相机。但我忘记释放该应用程序中的资源。所以不要忘记在应用程序即将关闭时释放资源。 (onStop / onDestroy())。 相机硬件是一种共享资源,必须小心管理,以免您的应用程序与可能也想使用它的其他应用程序发生冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 2016-01-21
      • 2021-12-25
      • 1970-01-01
      • 2016-09-24
      • 2014-07-17
      相关资源
      最近更新 更多