【问题标题】:RuntimeException using Camera.open()RuntimeException 使用 Camera.open()
【发布时间】:2013-05-21 08:57:33
【问题描述】:

这可能是一个高级问题,因为我在开发适用于 Android 的相机应用方面有相当多的经验,并且具备正确的基础知识。在某些手机上,打电话时

Camera.open(0);

我得到一个 RuntimeException。我的相机应用程序适用于大多数手机(1000 多种 Android 设备类型),但在少数(大约 50 多种设备类型)上失败。它在不同设备上似乎也不一致,这意味着该应用程序将始终在相同型号的设备上工作或失败。例如。该应用程序适用于某些 Galaxy S2,但在其他 S2 上失败。

我有几个 logcat:


在 Android 4.0.4 上

05-26 12:22:26.150 I/CameraService( 85): Opening camera 0<br/>
05-26 12:22:26.150 I/NvOmxCamera( 85): HAL_camera_device_open: open camera 0<br/>
05-26 12:22:26.150 D/NvOmxCamera( 85): HAL_openCameraHardware() use_camera_1st_source=1<br/>
05-26 12:22:26.150 E/NvOmxCamera( 85): Invalid camera ID 0, hardware does not support simultaneous CSI camera use<br/>
05-26 12:22:26.150 E/CameraService( 85): Could not open camera 0: -38<br/>
05-26 12:22:26.150 I/CameraService( 85): Destroying camera 0<br/>
05-26 12:22:26.160 D/AndroidRuntime(25895): Shutting down VM<br/>
05-26 12:22:26.160 W/dalvikvm(25895): threadid=1: thread exiting with uncaught exception (group=0x40a5a1f8)<br/>
05-26 12:22:26.180 E/Crittercism(25895): java.lang.RuntimeException: Fail to connect to camera service<br/>
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.native_setup(Native Method)<br/>
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.<init>(Camera.java:304)<br/>
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.open(Camera.java:264)<br/>

在 Android 2.3.6 上

05-26 11:27:16.984 W/CameraSwitch( 7088): open main camera<br/>
05-26 11:27:16.984 W/CameraSwitch( 7088): no file - can't switch camera<br/>
05-26 11:27:16.994 D/CameraService( 66): CameraService::connect E (pid 7088, client 0xad08)<br/>
05-26 11:27:16.994 D/CameraService( 66): CameraService::connect X (pid 7088, new client 0xad08) rejected. (old pid 7173, old client 0x3ca30)<br/>
05-26 11:27:16.994 D/CameraService( 66): The old client is dead!<br/>
05-26 11:27:16.994 D/AndroidRuntime( 7088): Shutting down VM<br/>
05-26 11:27:16.994 W/dalvikvm( 7088): threadid=1: thread exiting with uncaught exception (group=0x400259f8)<br/>
05-26 11:27:17.094 D/dalvikvm( 7088): GC_FOR_MALLOC freed 15803 objects / 957392 bytes in 93ms<br/>
05-26 11:27:17.114 E/Crittercism( 7088): java.lang.RuntimeException: Fail to connect to camera service<br/>
05-26 11:27:17.114 E/Crittercism( 7088): at android.hardware.Camera.native_setup(Native Method)<br/>
05-26 11:27:17.114 E/Crittercism( 7088): at android.hardware.Camera.<init>(Camera.java:118)<br/>
05-26 11:27:17.114 E/Crittercism( 7088): at android.hardware.Camera.open(Camera.java:91)
<br/>

我已经尝试了很多东西,但我就是不知道问题出在哪里。这行代码是要执行的第一行之一(Camera.open()),因此我的代码中不太可能出现错误。任何关于为什么这条线在某些相机上失败的任何见解都会非常有帮助。

如果相关,我将从服务中打开相机。我可以发布诊断此问题所需的任何信息。谢谢。

【问题讨论】:

    标签: android camera runtimeexception


    【解决方案1】:

    您的应用中是否包含相机权限和功能?
    如果是,则相机可能正在另一个应用程序中使用。

    来自android developers:
    “如果打开摄像头失败(例如,如果摄像头正在被另一个进程使用或设备策略管理器已禁用摄像头),则引发 RuntimeException。”

    【讨论】:

    • 不,这不是权限问题。就像我说的,我的应用适用于 1000 多种 Android 设备。我确实有一个问题,相机应用程序怎么可能被另一个应用程序使用。严格来说,可能有后台服务锁定了摄像头,但不太可能有这么多用户让摄像头被他们不知道的后台服务使用。
    猜你喜欢
    • 2016-08-12
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2014-06-27
    相关资源
    最近更新 更多