【发布时间】: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