Ich verbinde eine Webcam mit meinem Emulator, indem ich die Frontkamera im AVD Manager auf "webcam0" stelle. Wenn ich die Kameraanwendung des Emulators starte, wird der Fehler angezeigt
CameraService::connect X (pid 702) rejected (invalid cameraId 0).
Hier ist der relevante Teil des Android-Quellcodes:
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;
}
[...]
}
Der Webcam wurde die ID 0 korrekt zugewiesen, da nur 1 Kamera vorhanden ist. Ist mNumberOfCamerasjedoch vermutlich immer noch 0. Dies bedeutet, dass die Kamera vom Emulator registriert wird, sich jedoch nicht die Mühe gemacht hat, die Anzahl der angeschlossenen Kameras zu aktualisieren.
Wie kann ich eine Webcam anschließen, damit sie vom Emulator richtig erkannt wird?
Bearbeiten: Der Befehl emulator -webcam-list -avd <name of your AVD>in \android-sdks\toolsgibt das Ergebnis:
List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`
Wenn ich die Webcam über den AVD-Manager von Eclipse starte oder verwende emulator -camera-front webcam0 -avd <name of your AVD>, wird das folgende Fenster angezeigt:

Edit 2: Dies scheint ein Fehler im Emulator zu sein. Die vorgeschlagene Antwort sagt Ihnen, was Sie tun müssen, um die Kamera einzurichten, löst das Problem jedoch nicht für mich. Ich habe es letztendlich gelöst, indem ich einen Laptop mit integrierter Webcam verwendet habe. Vielleicht hat auch eine andere USB-Webcam funktioniert.




