访问相机时崩溃?

时间:2017-02-23 04:23:20

标签: java android

我正在尝试制作一个简单的手电筒应用程序,当我测试时,应用程序崩溃了。我认为在尝试访问相机时出现了问题。有什么建议?

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'

4 个答案:

答案 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 +,你应该使用你的代码请求权限,否则你可以减少构建版本