Android: Wie benutzt man eine Webcam im Emulator?

80

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:

Geben Sie hier die Bildbeschreibung ein

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.

1 ''
quelle

Antworten:

108

AKTUALISIEREN

In Android Studio AVD:

  1. Öffnen Sie den AVD Manager:

AVD-Menü

  1. AVD hinzufügen / bearbeiten:

Spezifischer AVD-Streifen

  1. Klicken Sie unten auf dem Bildschirm auf Erweiterte Einstellungen:

Erweiterte AVD-Einstellungen

  1. Stellen Sie die Kamera Ihrer Wahl als Front- / Rückkamera ein:

AVD-Kameraeinstellungen

nurnachman
quelle
3
Sie sollten die vordere und hintere Kamera nicht auf dieselbe Quelle einstellen.
Chris River
1
@ ChrisRiver Warum nicht? Es sollte keine Rolle spielen.
DaveTheMinion
2
Cool! Aber wie kann man eine Webcam ändern, wenn wir mehr als eine haben?
Walkmn
2
Der Simulator stürzt sofort ab, wenn die Kamera startet. Ich bin auf einem Mac.
Milind Mevada
2
@walkmn Sie können eine alternative Kamera über die CLI verwenden:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
steamer25
41

Befolgen Sie die folgenden Schritte in Eclipse.

  1. Gehe zu -> AVD Manager
  2. Erstellen / Bearbeiten der AVD.
  3. Hardware> Neu:
  4. Konfiguriert die Kamera nach hinten
  5. Klicken Sie auf den Eigenschaftswert und wählen Sie = "webcam0".
  6. Sobald dies alles erledigt ist, sollte die Webcam verbunden sein. Wenn dies nicht der Fall ist, müssen Sie Ihre WebCam-Treiber überprüfen.

Weitere Informationen finden Sie hier: Wie verwende ich eine Webkamera im Android-Emulator, um ein Livebild aufzunehmen?

Geben Sie hier die Bildbeschreibung ein

Lalith B.
quelle
2
Ich denke, dies ist eine ältere Benutzeroberfläche für den AVD-Manager. Früher hatte ich ein Fenster, das so aussah, aber jetzt kann ich die vordere und hintere Kamera aus speziellen Dropdown-Menüs auswählen.
1.
Ich benutze einen Mac, damit Eclipse in Mac OSX so aussieht. Daher können die Fenster und Menüs in Microsoft Windows und Linux OS unterschiedlich sein.
Lalith B
Beachten Sie, dass Sie auch die richtige API auswählen müssen. Sie können die Emulation für API 10 auswählen, diese funktioniert jedoch nicht. Ich denke, API 16 hat es als erstes wirklich unterstützt.
Nux
Nein, die Emulation basiert auf ADT und nicht auf der Android-API. ADT unterstützt die Emulation seit 19, denke ich.
Lalith B
Wählen Sie im Android Studio für Schritt 3 die Schaltfläche "Erweiterte Einstellungen anzeigen", um die Kameraoptionen anzuzeigen.
Eldes
7

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:

http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

Sein Code basiert auf den aktuellen Android-APIs und sollte in Ihrem Fall funktionieren, da Sie eine aktuelle Android-API verwenden.

Halim Qarroum
quelle
Ich habe das gesehen, aber ich nahm an, dass es veraltet war. Ich werde es benutzen, wenn es keinen anderen Weg gibt. Mit dem AVD-Manager können Sie jedoch eine Webcam als vordere oder hintere Kamera angeben. Ich gehe daher davon aus, dass der Emulator eine native Funktion zur Verwendung einer Webcam als Eingabe hat.
1 ''
Was 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>
Halim Qarroum
3

Ich würde vorschlagen, die Treiber zu überprüfen und bei Bedarf zu aktualisieren.

Tanuj Nayak
quelle
2
Mein Fahrer ist trotz seines Alters von 6 Jahren angeblich auf dem neuesten Stand und ich kann online keine neuere Version finden. Ich kann versuchen, die Kamera zu wechseln, wenn ich eine andere finde.
1.