[英]Crash when accessing camera?
我正在尝试制作一个简单的手电筒应用程序,当我测试时,该应用程序崩溃。 我认为尝试访问相机时出了点问题。 有什么建议么?
W/CameraBase: An error occurred while connecting to camera: 0
W/CameraBase: An error occurred while connecting to camera: 0
W/CameraBase: An error occurred while connecting to camera: 0
W/CameraBase: An error occurred while connecting to camera: 0
W/CameraBase: An error occurred while connecting to camera: 0
I/Camera2Mode: fail
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.open(Camera.java:479)
at android.hardware.Camera.open(Camera.java:547)
at android.view.View.performClick(View.java:5226)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:21266)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
D/Process: killProcess, pid=23317
D/Process: com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException:113 java.lang.ThreadGroup.uncaughtException:693 java.lang.ThreadGroup.uncaughtException:690
Disconnected from the target VM, address: 'localhost:8603', transport: 'socket'
我认为您需要将摄像头权限放入清单文件中
<uses-permission android:name="android.permission.CAMERA"/>
可以链接到此问题的其他内容,请参考此链接
可能有两个问题。 一种是易于处理的权限。另外,在为Android 6.0开发应用程序时,请谨慎处理权限,只需在清单中添加以下内容即可:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
另一个是当您尝试打开相机时,可能是那个时候有另一个正在使用相机的应用程序。 因此,为避免发生异常,您需要将打开的摄像头包装在try-catch块中。 像这样:
static Camera camera = null;
try{
camera = Camera.open();
} catch(Exception e) {
Log.e("Error", ""+e);
}
将此添加到您的清单
<uses-permission android:name="android.permission.CAMERA"/>
对于SDK 23及更高版本
<uses-permission-sdk-23 android:name="android.permission.CAMERA"/>
如果您的测试手机为6.0+,则应使用代码请求权限,否则您可以降低构建版本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.