Estoy conectando una cámara web a mi emulador configurando la cámara frontal en "webcam0" en AVD Manager. Cuando inicio la aplicación de la cámara del emulador, aparece el error
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Aquí está la parte relevante del código fuente de 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;
}
[...]
}
A la cámara web se le ha asignado correctamente un ID de 0 porque solo hay 1 cámara. Sin embargo, mNumberOfCameraspresumiblemente sigue siendo 0. Esto significa que el emulador está registrando la cámara, pero no se ha molestado en actualizar el número de cámaras conectadas.
¿Cómo puedo conectar una cámara web para que el emulador la reconozca correctamente?
Editar: el comando emulator -webcam-list -avd <name of your AVD>en \android-sdks\toolsda el resultado:
List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`
Cuando ejecuto la cámara web desde el administrador AVD de Eclipse o la uso emulator -camera-front webcam0 -avd <name of your AVD>, aparece la siguiente ventana:

Edición 2: esto parece ser un error en el emulador. La respuesta sugerida le dice qué hacer para configurar la cámara, pero no me resuelve el problema. Finalmente lo resolví usando una computadora portátil con una cámara web incorporada. Quizás otra cámara web USB podría haber funcionado también.




