Je connecte une webcam à mon émulateur en réglant la caméra frontale sur "webcam0" dans le gestionnaire AVD. Lorsque je lance l'application caméra de l'émulateur, j'obtiens l'erreur suivante
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Voici la partie concernée du code source d'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;
}
[...]
}
La webcam s'est vu attribuer correctement un ID de 0 car il n'y a qu'une seule caméra. Cependant, mNumberOfCameras
est vraisemblablement toujours 0. Cela signifie que la caméra est enregistrée par l'émulateur, mais qu'il n'a pas pris la peine de mettre à jour le nombre de caméras connectées.
Comment puis-je connecter une webcam pour qu'elle soit correctement reconnue par l'émulateur ?
Edit : la commande emulator -webcam-list -avd <name of your AVD>
en \android-sdks\tools
donne le résultat :
List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`
Lorsque je lance la webcam à partir du gestionnaire AVD d'Eclipse ou à l'aide de la fonction emulator -camera-front webcam0 -avd <name of your AVD>
J'obtiens la fenêtre suivante :
Edit 2 : Cela semble être un bug dans l'émulateur. La réponse suggérée vous dit quoi faire pour configurer la caméra, mais ne résout pas le problème pour moi. J'ai finalement résolu le problème en utilisant un ordinateur portable avec une webcam intégrée. Peut-être qu'une autre webcam USB aurait également pu fonctionner.