Java 为什么android模拟器摄像头意外停止?

Java 为什么android模拟器摄像头意外停止?,java,android,android-emulator,camera,Java,Android,Android Emulator,Camera,我使用的是安卓2.2(API级别8)。已在清单中启用摄影机。当我尝试emulator模型提供的摄像头图标时,它会运行几秒钟,显示一个灰色框在黑白棋盘上移动,然后消失,并显示错误消息: 对不起!应用程序摄影机(进程) com.android.camera)已停止 意外地请再试一次 当然,再试一次也无济于事。我正在使用提供的模拟器摄像头将行为与我正在使用的摄像头应用程序进行比较。为什么android仿真器摄像头意外停止?仿真器摄像头充其量是片状的。我可以想象,因为仿真器没有真正的摄像头,所以硬件是由

我使用的是安卓2.2(API级别8)。已在清单中启用摄影机。当我尝试emulator模型提供的摄像头图标时,它会运行几秒钟,显示一个灰色框在黑白棋盘上移动,然后消失,并显示错误消息:

对不起!应用程序摄影机(进程) com.android.camera)已停止 意外地请再试一次


当然,再试一次也无济于事。我正在使用提供的模拟器摄像头将行为与我正在使用的摄像头应用程序进行比较。为什么android仿真器摄像头意外停止?

仿真器摄像头充其量是片状的。

我可以想象,因为仿真器没有真正的摄像头,所以硬件是由您提到的checkerbox模拟的。因为没有真正的硬件驱动程序,它很可能会尝试检查功能,或者设置由于模拟硬件不支持而无法完成的功能。您最好使用它来调试相机或自己编译相机,并添加一些调试输出,以了解到底发生了什么。

它在2.1及更早版本中工作吗

在DDMS透视图中,我可以看到如下所示的异常:

虽然我还没有尝试过文章中建议的代码更改

这可能只是因为模拟器摄像头不稳定:)

要获得更多详细信息,请从主机命令行运行“平台工具/adb logcat”。基本问题似乎是摄像机认为有多个客户端连接。相机也会将旋转设置为横向,但碰撞后无法将其设置回原位:

I/ActivityManager(   70): Starting: Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.Camera } from pid 875
I/ActivityManager(   70): Start proc com.android.camera for activity com.android.camera/.Camera: pid=888 uid=10031 gids={1006, 1015}
I/WindowManager(   70): Setting rotation to 1, animFlags=1
I/ActivityManager(   70): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=22}
V/CameraHolder(  888): open camera 0
W/CameraService(   34): CameraService::connect X (pid 888) rejected (existing client).
E/CameraHolder(  888): fail to connect Camera
E/CameraHolder(  888): java.lang.RuntimeException: Fail to connect to camera service
E/CameraHolder(  888):  at android.hardware.Camera.native_setup(Native Method)
E/CameraHolder(  888):  at android.hardware.Camera.<init>(Camera.java:258)
E/CameraHolder(  888):  at android.hardware.Camera.open(Camera.java:220)
E/CameraHolder(  888):  at com.android.camera.CameraHolder.open(CameraHolder.java:124)
E/CameraHolder(  888):  at com.android.camera.Camera.ensureCameraDevice(Camera.java:1608)
E/CameraHolder(  888):  at com.android.camera.Camera.startPreview(Camera.java:1660)
E/CameraHolder(  888):  at com.android.camera.Camera.access$5500(Camera.java:95)
E/CameraHolder(  888):  at com.android.camera.Camera$3.run(Camera.java:908)
E/CameraHolder(  888):  at java.lang.Thread.run(Thread.java:1019)
W/dalvikvm(  888): threadid=11: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime(  888): FATAL EXCEPTION: Thread-12
I/ActivityManager(70):从pid 875开始:Intent{act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.camera}
I/ActivityManager(70):启动proc com.android.camera for activity com.android.camera/.camera:pid=888 uid=10031 gids={10061015}
I/WindowManager(70):将旋转设置为1,animFlags=1
I/ActivityManager(70):配置更改:{scale=1.0 imsi=310/260 loc=en_US touch=3个按键=2/1/2导航=3/1方向=2布局=34 uiMode=17 seq=22}
V/CameraHolder(888):打开摄影机0
带CameraService(34):CameraService::connect X(pid 888)已拒绝(现有客户端)。
E/CameraHolder(888):无法连接摄像头
E/CameraHolder(888):java.lang.RuntimeException:无法连接到相机服务
E/CameraHolder(888):在android.hardware.Camera.native_设置中(本机方法)
E/CameraHolder(888):在android.hardware.Camera.(Camera.java:258)
E/CameraHolder(888):在android.hardware.Camera.open(Camera.java:220)上
E/CameraHolder(888):位于com.android.camera.CameraHolder.open(CameraHolder.java:124)
E/CameraHolder(888):位于com.android.camera.camera.ensureCameraDevice(camera.java:1608)
E/CameraHolder(888):位于com.android.camera.camera.startPreview(camera.java:1660)
E/CameraHolder(888):com.android.camera.camera.access$5500(camera.java:95)
E/CameraHolder(888):位于com.android.camera.camera$3.run(camera.java:908)
E/CameraHolder(888):位于java.lang.Thread.run(Thread.java:1019)
W/dalvikvm(888):threadid=11:线程退出时出现未捕获异常(组=0x40015560)
E/AndroidRuntime(888):致命异常:线程12

另请参见问题“”

我已经意识到模拟器上的摄像头模拟在API级别4(Android 1.6)及以下是稳定的,不会崩溃。

这是Android中最大的谜团之一。。。你最好不要用模拟器摄像头测试任何东西。它并不总是很好用。