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

38

我在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。


2
嗨Johnson,你指的开发工具是什么? - Alessandro Roaro
1
我也遇到了同样的问题 - 你目前找到解决方案了吗? 在我的情况下,是AndroidStudio引起的。 - Jon
1
嗨Jon,我还没有解决这个问题。问题出在哪里? - Alessandro Roaro
1
很奇怪-当我从VLC启动相机时,它可以完美地工作。但是在使用Android模拟器时,它会失败,出现相同的错误消息。因此,是时候来一份赏金了! - Jon
1
我正在使用相同的操作系统,因此我已将其添加到编辑中。 - Alessandro Roaro
显示剩余6条评论
5个回答

22

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


5
我已经说过了,我配置了模拟器使用前置摄像头。无论如何还是谢谢。 - Alessandro Roaro
我读到一个警告,AVD管理器中不能给相机命名两次相同的名称。因此,选择前置和后置摄像头会违反这个规则。 - Quigi

12

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

文件:~/.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管理器:

  1. 在AVD中添加SD卡
    在SD卡设置中,为Size设置值。要启用相机,必须在模拟器中启用SD卡。
  2. 在AVD下的硬件中添加相机支持
    现在,在“硬件”部分下,单击“新建”按钮以添加相机硬件。它将打开以下对话框。从属性下拉列表中选择相机支持,并单击确定。
  3. 在硬件中启用相机支持
    新的硬件:“相机支持”在“硬件”部分下可见。将其值设置为yes,并通过按Edit AVD保存更改。
  4. 保存更改并启动模拟器。

有关 Visual Studio AVD 的任何想法吗? - ManirajSS
请参考:https://www.visualstudio.com/en-us/features/msft-android-emulator-vs.aspx - Mayavi

10
您可以尝试手动编辑位于 ~/.android/avd/yourAvdName/config.iniAVD配置文件,并添加以下行:

hw.camera=yes

更新

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

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

请记住,maxHorizontalPixels的默认值为640maxVerticalPixels的默认值为480,因此更改这些值可能有助于解决您的问题。


我们没有激活相机的问题。相机已经被激活,但驱动程序似乎存在问题。相机可以在VLC和Cheese中使用。但是在模拟器中无法使用。然而,系统可以检测到相机。 - Jon
3
hw.camera=yes 解决了我的问题!谢谢!奇怪的是,如果你使用 AVD 管理器保存你的 AVD 配置,它会删除 hw.camera=yes 变量。o.O - Alexander Haroldo da Rocha

1
我在使用OS X时遇到了一个类似的问题,但错误信息略有不同。原来一切都正常,只是当相机初始化时间过长时模拟器会崩溃。
在我的情况下,我关闭了其他应用程序,问题得到了解决。您可能需要在性能更好的计算机上进行测试。

0

我在模拟器(Linux下)中使用相机时遇到了麻烦,即使按照这里的指示在AVD中设置了它。我注意到它尝试使用的相机是/dev/video0,但我想要的相机是/dev/video3。快速交换一下...

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

...成功了

将 /dev/video6 更改为 /dev/video0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接