5

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

Camera.open(0);

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

我有几个 logcat:


在安卓 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/>

在安卓 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())之一,因此错误不太可能出现在我的代码中。关于为什么这条线在某些相机上失败的任何见解都将非常有帮助。

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

4

1 回答 1

1

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

来自android 开发人员
“如果打开相机失败(例如,如果相机正在被另一个进程使用或设备策略管理器禁用了相机),则引发 RuntimeException。”

于 2013-05-26T10:59:23.280 回答