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

时间:2012-12-23 17:11:31

标签: android

我通过在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;
    }

    [...]
}

网络摄像头已正确分配ID为0,因为只有1个摄像头。但是,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>启动网络摄像头时,我会看到以下窗口:

enter image description here

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

4 个答案:

答案 0 :(得分:66)

更新

在Android Studio AVD中:

  1. 打开AVD管理器:
  2. AVD menu

    1. 添加/编辑AVD:
    2. Specific AVD strip

      1. 点击屏幕底部的高级设置:
      2. AVD Advanced Settings

        1. 将您选择的相机设置为前/后相机:
        2. AVD Camera Settings

答案 1 :(得分:39)

按照Eclipse中的以下步骤进行操作。

  1. 转到 - &gt; AVD经理
  2. 创建/编辑AVD。
  3. 硬件&gt;新:
  4. 配置面向后方的相机
  5. 单击属性值并选择=“webcam0”。
  6. 完成上述所有操作后,应连接网络摄像头。如果没有,那么你需要检查你的WebCam驱动程序。
  7. 点击此处了解更多信息: How to use web camera in android emulator to capture a live image?

    enter image description here

答案 2 :(得分:7)

我建议你看一下这篇评价很高的博客文章,该帖子能够为你所面临的问题提供解决方案:

  

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

他的代码基于当前的Android API,并且鉴于您使用的是最近的Android API,它应该适用于您的情况。

答案 3 :(得分:3)

如果需要,我建议检查驱动程序并更新它们。