我通过在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>
启动网络摄像头时,我会看到以下窗口:
编辑2:这似乎是模拟器中的一个错误。建议的答案告诉您如何设置相机,但不能解决我的问题。我最终通过使用内置网络摄像头的笔记本电脑解决了这个问题。也许另一个USB网络摄像头可能也有效。
答案 0 :(得分:66)
更新
在Android Studio AVD中:
答案 1 :(得分:39)
按照Eclipse中的以下步骤进行操作。
点击此处了解更多信息: How to use web camera in android emulator to capture a live image?
答案 2 :(得分:7)
我建议你看一下这篇评价很高的博客文章,该帖子能够为你所面临的问题提供解决方案:
http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html
他的代码基于当前的Android API,并且鉴于您使用的是最近的Android API,它应该适用于您的情况。
答案 3 :(得分:3)
如果需要,我建议检查驱动程序并更新它们。