【问题标题】:Android: How to use webcam in emulator?Android:如何在模拟器中使用网络摄像头?
【发布时间】:2012-12-10 09:05:20
【问题描述】:

我通过在 AVD 管理器中将前置摄像头设置为“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。这意味着模拟器正在注册相机,但它并没有费心更新连接的相机数量。

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

编辑:\android-sdks\tools 中的命令 emulator -webcam-list -avd &lt;name of your AVD&gt; 给出结果:

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 &lt;name of your AVD&gt; 启动网络摄像头时,我得到以下窗口:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    更新

    在 Android Studio AVD 中:

    1. 打开 AVD 管理器:

    1. 添加/编辑 AVD:

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

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

    【讨论】:

    • 你不应该将前后摄像头设置为同一来源。
    • @ChrisRiver 为什么不呢?应该没关系。
    • 酷!但是如果我们有多个网络摄像头,如何更换网络摄像头?
    • 相机启动时模拟器会立即崩溃。我在 Mac 上。
    • @walkmn 您可以通过 CLI 使用备用凸轮:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
    【解决方案2】:

    在 Eclipse 中按照以下步骤操作。

    1. 转到 -> AVD 管理器
    2. 创建/编辑 AVD。
    3. 硬件 > 新功能:
    4. 配置后置摄像头
    5. 点击属性值并选择=“webcam0”。
    6. 完成上述所有操作后,应连接网络摄像头。如果没有,那么您需要检查您的网络摄像头驱动程序。

    点击此处了解更多信息: How to use web camera in android emulator to capture a live image?

    【讨论】:

    • 我认为这是 AVD 管理器的旧 UI。我曾经有一个看起来像这样的窗口,但现在我可以从专用下拉菜单中选择前置和后置摄像头。
    • 我使用的是 mac,所以 eclipse 在 mac osx 中看起来是这样的。所以微软windows和linux操作系统的windows和menu可能会有所不同。
    • 请注意,您还需要选择正确的 API。您可以为 API 10 选择仿真,但它不起作用。我认为 API 16 是第一个真正支持它的。
    • 没有仿真是基于 ADT 而不是基于 Android API。我认为 ADT 从 19 年开始就支持仿真。
    • 在 Android Studio 中,对于第 3 步,选择“显示高级设置”按钮以显示相机选项。
    【解决方案3】:

    我建议你看看这篇评价很高的博客文章,它设法解决了你面临的问题:

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

    他的代码基于当前的 Android API,鉴于您使用的是最新的 Android API,因此应该适用于您的情况。

    【讨论】:

    • 我看过这个,但我认为它已经过时了。如果没有其他方法,我会使用它。但是,AVD 管理器允许您将网络摄像头指定为前置或后置摄像头,因此我假设模拟器具有使用网络摄像头作为输入的本机功能。
    • emulator -webcam-list -avd &lt;name of your AVD&gt; 命令顺便告诉你什么?如果您更改了 AVD 的属性以将网络摄像头设置为 webcam0,请尝试使用 emulator -camera-front webcam0 -avd &lt;name of your AVD&gt; 启动它
    【解决方案4】:

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

    【讨论】:

    • 我的驱动程序虽然已经 6 岁,但应该是最新的,我在网上找不到更新的版本。如果我能找到另一个,我可能会尝试更换相机。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2019-09-01
    • 2012-04-24
    相关资源
    最近更新 更多