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 mNumberOfCameras
jedoch 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\tools
gibt 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.
cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
Befolgen Sie die folgenden Schritte in Eclipse.
Weitere Informationen finden Sie hier: Wie verwende ich eine Webkamera im Android-Emulator, um ein Livebild aufzunehmen?
quelle
Ich empfehle Ihnen, sich diesen hoch bewerteten Blog-Beitrag anzusehen, der es schafft, eine Lösung für das Problem zu finden, mit dem Sie konfrontiert sind:
Sein Code basiert auf den aktuellen Android-APIs und sollte in Ihrem Fall funktionieren, da Sie eine aktuelle Android-API verwenden.
quelle
emulator -webcam-list -avd <name of your AVD>
sagt Ihnen der Befehl übrigens? Wenn Sie die Eigenschaften von AVD geändert haben, um Ihre Webcam auf webcam0 zu setzen, starten Sie sie mitemulator -camera-front webcam0 -avd <name of your AVD>
Ich würde vorschlagen, die Treiber zu überprüfen und bei Bedarf zu aktualisieren.
quelle