我通过在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网络摄像头可能也起作用。




