I'm connecting a webcam to my emulator by setting the front camera to "webcam0" in the AVD Manager. When I start the emulator's camera application, I get the error
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Here's the relevant portion of the Android source code:
sp CameraService::connect( const sp& cameraClient, int cameraId) { int callingPid = getCallingPid(); [...] if (cameraId = mNumberOfCameras) { LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).", callingPid, cameraId); return NULL; } [...] }
The webcam has been correctly assigned an ID of 0 because there's only 1 camera. However, mNumberOfCameras
is presumably still 0. This means that the camera is being registered by the emulator, but it hasn't bothered to update the number of connected cameras.
How can I connect a webcam so that it will be properly recognized by the emulator?
Edit: the command emulator -webcam-list -avd
in \android-sdks\tools
gives the result:
List of web cameras connected to the computer: Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`
When I launch the webcam from Eclipse's AVD manager or using emulator -camera-front webcam0 -avd
, I get the following window:
Edit 2: This seems to be a bug in the emulator. The suggested answer tells you what to do to set up the camera, but doesn't solve the problem for me. I ultimately solved it by using a laptop with a built-in webcam. Perhaps another USB webcam might have worked as well.