繁体   English   中英

访问相机时崩溃?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM