Podłączam kamerę internetową do mojego emulatora, ustawiając przednią kamerę na „webcam0” w menedżerze AVD. Po uruchomieniu aplikacji aparatu emulatora pojawia się błąd
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Oto odpowiednia część kodu źródłowego Androida:
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;
}
[...]
}
Kamera internetowa została poprawnie przypisana do identyfikatora 0, ponieważ jest tylko 1 kamera. Jednak mNumberOfCamerasprzypuszczalnie nadal wynosi 0. Oznacza to, że kamera jest rejestrowana przez emulator, ale nie zadał sobie trudu, aby zaktualizować liczbę podłączonych kamer.
Jak mogę podłączyć kamerę internetową, żeby była poprawnie rozpoznawana przez emulator?
Edycja: polecenie emulator -webcam-list -avd <name of your AVD>w \android-sdks\toolsdaje wynik:
List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`
Kiedy uruchamiam kamerę internetową z menedżera AVD Eclipse lub używam go emulator -camera-front webcam0 -avd <name of your AVD>, pojawia się następujące okno:

Edycja 2: Wygląda na to, że jest to błąd w emulatorze. Sugerowana odpowiedź podpowiada, co zrobić, aby ustawić kamerę, ale nie rozwiązuje problemu. Ostatecznie rozwiązałem to używając laptopa z wbudowaną kamerą internetową. Być może zadziałałaby również inna kamera internetowa USB.




