我正在尝试制作一个简单的手电筒应用程序,当我测试时,应用程序崩溃了。我认为在尝试访问相机时出现了问题。有什么建议?
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'
答案 0 :(得分:1)
我认为您需要将相机权限放在清单文件中,如此
<uses-permission android:name="android.permission.CAMERA"/>
可以链接到此问题的其他内容请参阅this链接
答案 1 :(得分:1)
可能有两个问题。一个是易于处理的权限。如果您正在为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);
}
答案 2 :(得分:1)
将此添加到您的清单
<uses-permission android:name="android.permission.CAMERA"/>
以及适用于SDK 23及更高版本的
<uses-permission-sdk-23 android:name="android.permission.CAMERA"/>
答案 3 :(得分:0)
如果你的测试手机是6.0 +,你应该使用你的代码请求权限,否则你可以减少构建版本