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

通过在AVDpipe理器中将前置摄像头设置为“webcam0”,我将一个networking摄像头连接到我的仿真器。 当我启动模拟器的相机应用程序,我得到错误

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; } [...] } 

因为只有一个摄像头,networking摄像头已被正确分配了ID。 但是, mNumberOfCameras大概仍然是0.这意味着相机正在被模拟器注册,但是没有更新连接的相机的数量。

如何连接networking摄像头以便模拟器能够正确识别?

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

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

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

在这里输入图像说明

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

在Eclipse中遵循以下步骤。

  1. 转到 – > AVDpipe理器
  2. 创build/编辑AVD。
  3. 硬件>新:
  4. configuration相机朝后
  5. 点击属性值,然后select=“webcam0”。
  6. 一旦完成以上所有的摄像头应该连接。 如果没有,那么你需要检查你的WebCam驱动程序。

点击这里查看更多信息: 如何在android模拟器中使用networking摄像头捕捉实时图像?

在这里输入图像说明

UPDATE

在Android Studio AVD中:

  1. 打开AVDpipe理器:

AVD菜单

  1. 添加/编辑AVD:

特定的AVD条

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

AVD高级设置

  1. 将您select的相机设置为前置/后置摄像头:

AVD相机设置

我build议你看看这个高度评价的博客文章,它设法解决你所面临的问题:

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

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

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