Android模拟器:无法启动网络摄像头以在模拟器中捕获图片

时间:2015-01-10 10:55:49

标签: java android android-studio emulation avd

我在Android Studio的AVD管理器中创建了一个armeabi API 21模拟器,将其设置为使用网络摄像头作为前置摄像头,然后启动它。 问题在于它无法打开它,因为我收到了这个错误:

emulator: ERROR: camera_device_start_capturing: VIDIOC_STREAMON on camera '/dev/video0' has failed: Timer expired
emulator: ERROR: _camera_client_query_start: Cannot start camera '/dev/video0' for NV21[640x480]: Inappropriate ioctl for device

我该如何解决这个问题?

网络摄像头使用其他软件正常工作。操作系统是Ubuntu 14.04。

5 个答案:

答案 0 :(得分:18)

在Android Studio中,转到AVD Manager,单击Actions中的编辑(铅笔)按钮。之后,在下一个出现的窗口中,单击“高级设置”,然后向下滚动并在“摄像机”选项中,选择前后摄像头。

答案 1 :(得分:12)

要在Android模拟器中启用相机,只需在AVD的config.ini文件中添加以下突出显示的代码即可。您可以在config.ini文件夹下找到<userdirectory>/.android文件。

档案:~/.android/config.ini

hw.lcd.density=160<br>
skin.name=HVGA<br>
skin.path=platforms\android-9\skins\HVGA<br>
hw.cpu.arch=arm<br>
abi.type=armeabi<br>
vm.heapSize=24<br>
image.sysdir.1=platforms\android-9\images\<br>
hw.camera=yes<br>
sdcard.size=64M<br>

如果您没有找到config.ini文件或想要通过Android SDK和AVD Manager启用相机支持,请执行以下操作:

打开Android SDK和AVD Manager:

  1. 在AVD中添加SD卡
    在SD卡设置中,设置大小的值。要启用摄像头,必须在仿真器中启用SD卡。
  2. 在AVD下的硬件中添加相机支持
    现在在Hardware部分下,单击New按钮添加Camera硬件。它将打开以下对话框。从“属性”下拉列表中选择“相机支持”,然后单击“确定”。
  3. 在硬件中启用相机支持
    新硬件:在硬件部分下可以看到相机支持。将其值设置为yes并按Edit AVD保存更改。
  4. 保存更改并启动模拟器。

答案 2 :(得分:6)

您可以尝试手动修改

AVD的配置文件
  

〜/ .android / AVD / yourAvdName / config.ini中

添加以下行:

hw.camera=yes

<强>更新

您可以尝试指定网络摄像头的真实分辨率

hw.camera.maxHorizontalPixels=XXX
hw.camera.maxVerticalPixels=XXX

请注意, maxHorizo​​ntalPixels 的默认值为 640 maxVerticalPixels 的默认值为 480 ,因此chaning这些值可以帮助您解决问题。

答案 3 :(得分:1)

我遇到了类似的问题,OS X下的错误消息略有不同。我发现一切都还可以,但是当相机花费太多时间进行初始化时,模拟器会崩溃。

我是我的情况我最终关闭了其他应用程序并且它有效。您可能希望在性能更高的计算机上进行测试。

答案 4 :(得分:0)

即使按照此处的说明在AVD中进行设置,我也无法使相机在仿真器(在Linux下)下工作。我注意到它要使用的摄像机是/ dev / video0,但我想要的摄像机是/ dev / video3,这对我有所帮助。快速交换...

mv /dev/video0 /dev/video4
mv /dev/video3 /dev/video0

...成功了

Change /dev/video6 into /dev/video0