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, mNumberOfCameras
presumiblemente 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\tools
da 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.
cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
Siga los pasos a continuación en Eclipse.
Consulte aquí para obtener más información: ¿Cómo usar la cámara web en el emulador de Android para capturar una imagen en vivo?
fuente
Le sugiero que mire esta publicación de blog altamente calificada que logra dar una solución al problema que enfrenta:
Su código se basa en las API de Android actuales y debería funcionar en su caso dado que está utilizando una API de Android reciente.
fuente
emulator -webcam-list -avd <name of your AVD>
cierto, ¿ qué te dice el comando? Si cambió las propiedades de AVD para configurar su cámara web en webcam0, intente iniciarla usandoemulator -camera-front webcam0 -avd <name of your AVD>
Sugeriría verificar los controladores y actualizarlos si es necesario.
fuente