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 mNumberOfCameras
przypuszczalnie 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\tools
daje 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.
cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
Wykonaj poniższe czynności w Eclipse.
Sprawdź tutaj, aby uzyskać więcej informacji: Jak używać kamery internetowej w emulatorze Androida do przechwytywania obrazu na żywo?
źródło
Proponuję zapoznać się z tym wysoko ocenianym postem na blogu, w którym udało się znaleźć rozwiązanie problemu:
Jego kod jest oparty na aktualnych interfejsach API systemu Android i powinien działać w Twoim przypadku, biorąc pod uwagę, że używasz najnowszego interfejsu API systemu Android.
źródło
emulator -webcam-list -avd <name of your AVD>
mówi polecenie? Jeśli zmieniłeś właściwości AVD, aby ustawić kamerę internetową na webcam0, spróbuj uruchomić ją za pomocąemulator -camera-front webcam0 -avd <name of your AVD>
Sugerowałbym sprawdzenie sterowników i zaktualizowanie ich w razie potrzeby.
źródło