Android:如何在模拟器中使用网络摄像头?


81

我通过在AVD Manager中将前置摄像头设置为“ webcam0”将摄像头连接到仿真器。启动模拟器的相机应用程序时,出现错误

CameraService::connect X (pid 702) rejected (invalid cameraId 0).

这是Android源代码的相关部分:

sp<ICamera> CameraService::connect(
    const sp<ICameraClient>& cameraClient, int cameraId) {

    int callingPid = getCallingPid();

    [...]

    if (cameraId < 0 || cameraId >= mNumberOfCameras) {
        LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).",
            callingPid, cameraId);
        return NULL;
    }

    [...]
}

由于只有1个摄像头,因此已为网络摄像头正确分配了ID 0。但是,mNumberOfCameras大概仍为0。这意味着相机正在由仿真器注册,但是它并没有费心去更新连接的相机的数量。

如何连接网络摄像头,以便模拟器可以正确识别它?

编辑:在命令emulator -webcam-list -avd <name of your AVD>\android-sdks\tools给出结果:

List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`

当我从Eclipse的AVD管理器或使用启动网络摄像头时emulator -camera-front webcam0 -avd <name of your AVD>,出现以下窗口:

在此处输入图片说明

编辑2:这似乎是模拟器中的错误。建议的答案会告诉您如何设置相机,但不能为我解决问题。我最终通过使用带有内置网络摄像头的笔记本电脑解决了该问题。也许另一个USB网络摄像头可能也起作用。

Answers:


110

更新

在Android Studio AVD中:

  1. 打开AVD管理器:

AVD菜单

  1. 添加/编辑AVD:

特定的AVD带

  1. 点击屏幕底部的高级设置:

AVD高级设置

  1. 将您选择的摄像机设置为前置/后置摄像机:

AVD摄像机设置


3
您不应该将前置和后置摄像头的源设置为相同。
克里斯·里弗

1
@ChrisRiver为什么不呢?没关系
DaveTheMinion

2
凉!但是,如果我们有多个摄像头,该如何更改?
walkmn

2
相机启动时,它会立即使模拟器崩溃。我在Mac上。
梅琳达·内华达州

2
@walkmn您可以通过CLI使用备用凸轮:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
steamer25

41

在Eclipse中执行以下步骤。

  1. 转到-> AVD Manager
  2. 创建/编辑AVD。
  3. 硬件>新:
  4. 朝后配置摄像头
  5. 单击属性值,然后选择=“ webcam0”。
  6. 完成以上所有操作后,网络摄像机应已连接。如果不是,则需要检查WebCam驱动程序。

在此处查看更多信息: 如何在android模拟器中使用网络摄像头捕获实时图像?

在此处输入图片说明


2
我认为这是AVD管理器的旧版UI。我曾经有一个像这样的窗口,但是现在我可以从专用的下拉菜单中选择前后摄像头。
1

我使用Mac,因此Eclipse在Mac OSX中看起来是这样。因此,在Microsoft Windows和Linux OS中,窗口和菜单可能会有所不同。
Lalith B

请注意,您还需要选择正确的API。您可以为API 10选择仿真,但是它不起作用。我认为API 16是第一个真正支持它的人。
Nux

没有模拟基于ADT而不是基于Android API。我认为自19以来,ADT就一直支持仿真。
Lalith B 2013年

在Android Studio中,对于步骤3,选择“显示高级设置”按钮以显示相机选项。
Eldes

7

我建议您看一下这篇备受好评的博客,它可以为您面临的问题提供解决方案:

http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

他的代码基于当前的Android API,并且在您使用最新的Android API的情况下应该可以使用。


我已经看到了,但是我认为它已经过时了。如果没有其他方法,我将使用它。但是,AVD管理器允许您将网络摄像头指定为前置或后置摄像头,因此我假设仿真器具有使用网络摄像头作为输入的本机功能。
1英寸

emulator -webcam-list -avd <name of your AVD>命令告诉您什么?如果您将AVD的属性更改为将网络摄像头设置为webcam0,请尝试使用emulator -camera-front webcam0 -avd <name of your AVD>
Halim Qarroum 2012年

3

我建议检查驱动程序并在需要时进行更新。


2
我的驱动程序虽然已经6岁了,但据称是最新的,我无法在网上找到更新的版本。如果可以找到其他相机,我可以尝试更换相机。
1''
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.