Emulator-Konsolenbefehle senden

Für jedes ausgeführte virtuelle Gerät ist eine Konsole verfügbar, mit der Sie die emulierte Geräteumgebung abfragen und steuern können. Sie können beispielsweise die Konsolen verwenden, um Portweiterleitung, Netzwerkmerkmale und Telefonieereignisse zu verwalten, während Ihre App auf dem Emulator ausgeführt wird.

Für die folgenden Befehle muss bereits ein Emulator ausgeführt werden. Weitere Informationen zum Ausführen eines Emulators finden Sie unter Apps im Android-Emulator ausführen und Emulator über die Befehlszeile starten.

Konsolensitzung starten und beenden

Wenn Sie über ein Terminalfenster auf die Konsole zugreifen und Befehle eingeben möchten, stellen Sie mit Telnet eine Verbindung zum Konsolenport her und geben Sie Ihr Authentifizierungstoken an. Jedes Mal, wenn auf der Konsole OK angezeigt wird, ist sie bereit, Befehle entgegenzunehmen. Es gibt keinen typischen Prompt.

So stellen Sie eine Verbindung zur Konsole eines ausgeführten virtuellen Geräts her:

  1. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:

    telnet localhost console-port
    

    Im Titel des Emulatorfensters wird die Konsolenportnummer angezeigt, wenn der Emulator in einem separaten Fenster ausgeführt wird, nicht jedoch, wenn er in einem Toolfenster ausgeführt wird. Der Fenstertitel für einen Emulator, der den Konsolenport 5554 verwendet, könnte beispielsweise „Pixel8_API_34:5554“ lauten. Außerdem wird mit dem Befehl adb devices eine Liste der ausgeführten virtuellen Geräte und ihrer Konsolenportnummern ausgegeben. Weitere Informationen finden Sie unter Geräte abfragen.

    Hinweis:Der Emulator überwacht Verbindungen an den Ports 5554 bis 5585 und akzeptiert nur Verbindungen von localhost.

  2. Wenn in der Konsole OK angezeigt wird, geben Sie den Befehl auth auth_token ein.

    Bevor Sie Konsolenbefehle eingeben können, muss die Emulator-Konsole authentifiziert werden. auth_token muss mit dem Inhalt der Datei .emulator_console_auth_token in Ihrem Basisverzeichnis übereinstimmen.

    Wenn die Datei nicht vorhanden ist, wird sie mit dem Befehl telnet localhost console-port erstellt und enthält ein zufällig generiertes Authentifizierungstoken. Wenn Sie die Authentifizierung deaktivieren möchten, löschen Sie das Token aus der Datei .emulator_console_auth_token oder erstellen Sie eine leere Datei, falls sie nicht vorhanden ist.

  3. Nachdem Sie eine Verbindung zur Konsole hergestellt haben, können Sie Konsolenbefehle eingeben.

    Geben Sie help, help command oder help-verbose ein, um eine Liste der Konsolenbefehle aufzurufen und mehr über bestimmte Befehle zu erfahren.

  4. Geben Sie zum Beenden der Konsolensitzung quit oder exit ein.

Beispielsitzung:

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings  (ethernet and cellular only)
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device

try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

„Fire-and-forget“-Befehle

Wenn die Sitzung nicht geöffnet sein muss, verwenden Sie die Tastenkombination adb emu. Dadurch wird der Befehl ausgeführt und die Steuerung wird sofort an die aufrufende Shell zurückgegeben:

adb emu command commandParameter

Bei der Aufrufung mit adb emu wird eine Verbindung zum verfügbaren Emulator hergestellt. Wenn Sie mehrere Emulatoren gleichzeitig ausführen, müssen Sie die Seriennummer des jeweiligen Emulators angeben:

adb -s emulator-serial emu command commandParameter

Emulator-Befehlsreferenz

In den folgenden Listen werden die Emulator-Konsolenbefehle mit ihren Parametern und Werten beschrieben:

Allgemeine Befehle

  • avd {stop| start| status| name} Fragt das virtuelle Gerät ab, steuert es und verwaltet es:

    • stop: Beendet die Ausführung des Geräts.
    • start: Startet die Ausführung des Geräts.
    • status: Fragt den Status des virtuellen Geräts ab. Er kann „running“ (wird ausgeführt) oder „stopped“ (angehalten) sein.
    • name: Fragt den Namen des virtuellen Geräts ab.
  • avd snapshot {list| save name| load name| delete name}: Speichert und stellt den Gerätestatus in Snapshots wieder her, wie folgt:

    • list: Listet alle gespeicherten Snapshots auf.
    • save name: Speichert den Snapshot unter dem Namen.
    • load name: Lädt den benannten Snapshot.
    • delete name: Löscht den benannten Snapshot.

    Im folgenden Beispiel wird ein Snapshot mit dem Namen firstactivitysnapshot gespeichert:

    avd snapshot save firstactivitysnapshot
    
  • fold: Faltet das Gerät, um die kleinere Bildschirmkonfiguration anzuzeigen, wenn das Gerät faltbar und derzeit aufgeklappt ist.

  • unfold: Das Gerät wird aufgeklappt, um die Konfiguration mit dem größeren Display anzuzeigen, wenn das Gerät faltbar und derzeit zusammengeklappt ist.

  • kill: Beendet das virtuelle Gerät.

  • ping: Prüft, ob das virtuelle Gerät ausgeführt wird.

  • rotate: Dreht das AVD gegen den Uhrzeigersinn in 45-Grad-Schritten.

Emulator zum Absturz bringen

  • crash: Der Emulator stürzt während der Ausführung der App ab.

  • crash-on-exit: Der Emulator stürzt ab, wenn die App beendet wird.

Tags debuggen

  • debug tags ...: Aktiviert oder deaktiviert Debugging-Meldungen aus bestimmten Teilen des Emulators. Der Parameter „tags“ muss ein Wert aus der Liste der Debug-Tags sein, die angezeigt wird, wenn Sie emulator -help-debug-tags ausführen. Weitere Informationen zur Option -help-debug-tags finden Sie in der Tabelle mit häufig verwendeten Optionen. Im folgenden Beispiel wird das Funktag aktiviert:

    debug radio
    

Portumleitung

  • redir list: Listet die aktuelle Portweiterleitung auf.

  • redir add protocol:host-port:guest-port Fügt eine neue Portweiterleitung hinzu:

    • protocol: Muss entweder „tcp“ oder „udp“ sein.
    • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.
    • guest-port: Die Portnummer, an die Daten im Emulator weitergeleitet werden sollen.
  • redir del protocol:host-port Löscht eine Portweiterleitung.

    • protocol: Muss entweder „tcp“ oder „udp“ sein.
    • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.

Geografischer Standort

Legt den geografischen Standort fest, der an die Apps gemeldet wird, die in einem Emulator ausgeführt werden, indem ein GPS-Fix an den Emulator gesendet wird.

Sie können einen der folgenden geografischen Befehle ausgeben, sobald ein virtuelles Gerät ausgeführt wird. Der Emulator legt den von Ihnen eingegebenen Standort fest, indem er einen Mock-Standortanbieter erstellt. Dieser Anbieter reagiert auf von Apps festgelegte Standort-Listener und stellt dem LocationManager den Standort zur Verfügung. Jede App kann den Standortmanager abfragen, um den aktuellen GPS-Fix für das emulierte Gerät abzurufen, indem sie LocationManager.getLastKnownLocation("gps") aufruft.

  • geo fix longitude latitude [altitude] [satellites] [velocity]: Sendet einen einfachen GPS-Fix an den Emulator. Geben Sie Längen- und Breitengrad in Dezimalgrad an. Geben Sie mit einer Zahl von 1 bis 12 die Anzahl der Satelliten an, die zur Bestimmung der Position verwendet werden sollen, und geben Sie die Höhe in Metern und die Geschwindigkeit in Knoten an.

  • geo nmea sentence: Sendet einen NMEA 0183-Satz an das emulierte Gerät, als wäre er von einem emulierten GPS-Modem gesendet worden. Beginne den Satz mit „$GP“. Derzeit werden nur die Sätze „$GPGGA“ und „$GPRCM“ unterstützt. Das folgende Beispiel ist ein GPGGA-Satz (Global Positioning System Fix Data), der die Zeit-, Positions- und Fixdaten für einen GPS-Empfänger abruft:

    geo nmea $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
    

Gefälschte Hardware-Ereignisse

Mit dem Hardware-Ereignissubsystem der Emulatorkonsole können Sie praktisch jede physische Interaktion mit dem Gerät simulieren. Dazu gehören physische Tasten, Bildschirmberührungen/Gesten, Drehregler, Joystickeingaben und Hardwareschalter.

  • Ereignistypen: Hier werden alle gefälschten Ereignistypen aufgeführt. Bei Veranstaltungen mit Codes wird die Anzahl der Codes rechts in Klammern angegeben. Beispielausgabe:

    event types
    event <type> can be an integer or one of the following aliases:
        EV_SYN
        EV_KEY    (405 code aliases)
        EV_REL    (2 code aliases)
        EV_ABS    (27 code aliases)
        EV_MSC
        EV_SW     (4 code aliases)
        EV_LED
        EV_SND
        EV_REP
        EV_FF
        EV_PWR
        EV_FF_STATUS
        EV_MAX
    OK
    
  • event send types [types ...]: Sendet einen oder mehrere gefälschte Ereignistypen.

  • event codes type: Hier werden die Ereigniscodes für den angegebenen Typ von gefälschten Ereignissen aufgeführt.

  • event send type[:code]:[value] [...]: Sendet ein oder mehrere gefälschte Ereignisse mit optionalen Codes und Codewerten.

EV_KEY – Schlüsselcodereferenzen

Mit dem Ereignistyp EV_KEY werden das Drücken und Loslassen von Schaltflächen simuliert. In den folgenden Tabellen wird die umfangreiche Liste der unterstützten Tastencodes in logische Kategorien unterteilt. Beim Senden eines Werts von 1 für einen Tastencode wird ein Drücken simuliert, bei einem Wert von 0 ein Loslassen. Ein Wert von 2 steht für die Wiederholung einer Taste.

Untergeordnete Tabelle A: Android-Systemtasten
Code Beschreibung
KEY_HOME Auslöser über die Startbildschirmtaste
KEY_BACK Trigger für den Button „Zurück“
KEY_MENU Menü-Button (Dreipunkt-Menü)
KEY_POWER Ein/Aus-Taste (drücken/lange drücken)
KEY_VOLUMEUP Auslösen über die Lautertaste
KEY_VOLUMEDOWN Auslösen über die Leiser-Taste
KEY_CAMERA Physischer Auslöser für die Kamera
KEY_FOCUS Autofokus-Auslöser der Kamera
KEY_SEARCH Trigger für die Schaltfläche „Suchen“
KEY_SLEEP Schlaf-Befehl auslösen
KEY_WAKEUP Trigger für Aktivierungsbefehl
KEY_NOTIFICATION Benachrichtigungsleiste öffnen
KEY_MUTE Systemaudioausgabe stummschalten
KEY_MICMUTE Mikrofoneingabe stummschalten
KEY_BRIGHTNESSDOWN Helligkeit des Displays verringern
KEY_BRIGHTNESSUP Helligkeit des Displays erhöhen
KEY_PHONE Standard-App fürs Telefonieren öffnen
KEY_SEND Anruf senden oder starten
KEY_HEADSETHOOK Headset-Aufhänger (Annehmen/Auflegen)
KEY_SCREEN Befehl zum Aktivieren des Bildschirmschoners
KEY_CONFIG Systemmenü für die Konfiguration
KEY_SWITCHVIDEOMODE Systemvideomodus wechseln
KEY_KBDILLUMTOGGLE Tastaturbeleuchtung ein- oder ausschalten
Untergeordnete Tabelle B: Medien- und Wiedergabesteuerung
Code Beschreibung
KEY_PLAYPAUSE Zwischen Wiedergabe und Pause wechseln
KEY_PLAY Medienwiedergabe starten
KEY_PAUSECD CD-Wiedergabe pausieren
KEY_STOPCD CD-Wiedergabe beenden
KEY_NEXTSONG Zum nächsten Titel springen
KEY_PREVIOUSSONG Zum vorherigen Titel springen
KEY_REWIND Aktiven Track zurückspulen
KEY_FASTFORWARD Aktiven Track vorspulen
KEY_RECORD Triggerbefehl aufzeichnen
KEY_SHUFFLE Zufallsmix aktivieren/deaktivieren
KEY_REPEAT Wiederholung aktivieren/deaktivieren
KEY_MEDIA Trigger für Medientaste
Untertabelle C: Navigation und allgemeine Tastaturen
Code Beschreibung
KEY_UP Richtung „Steuerkreuz oben“
KEY_DOWN Steuerkreuztaste „Nach unten“
KEY_LEFT Steuerkreuztaste „Nach links“
KEY_RIGHT Richtungstaste „Rechts“ auf dem Steuerkreuz
KEY_PAGEUP Navigation mit „Bild auf“
KEY_PAGEDOWN Navigation mit Bildlauf nach unten
KEY_INSERT Schlüssel-Trigger einfügen
KEY_DELETE Tastentrigger löschen
KEY_ENTER Schlüssel-Trigger eingeben
KEY_ESC Trigger für die Escape-Taste
KEY_TAB Tabulatortaste als Trigger
KEY_SPACE Auslöser über die Leertaste
KEY_BACKSPACE Rücktaste
KEY_CLEAR Eingabepuffer leeren
KEY_CANCEL Aktive Aktion abbrechen
KEY_OK Auswahl bestätigen/OK
KEY_SELECT Element-Trigger auswählen
KEY_GOTO Zum angegebenen Ort gehen
KEY_HELP Auf den Hilfekontext zugreifen
Untergeordnete Tabelle D: Alphanumerische Zeichen und Ziffernblocksymbole
  • Standardbuchstaben des Alphabets:KEY_A bis KEY_Z (26 Codes).
  • Tasten des Ziffernblocks:KEY_1 bis KEY_0 (10 Codes).
Code Zeichensymbol
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (Ziffernblock)
KEY_KPPLUS + (Ziffernblock)
KEY_KPMINUS - (Ziffernblock)
KEY_KPDOT . (Ziffernblock)
KEY_KPSLASH / (Ziffernblock)
KEY_KPENTER Eingabe (Ziffernblock)
KEY_KPEQUAL = (Ziffernblock)
KEY_KPCOMMA , (Ziffernblock)
KEY_KPJPCOMMA , (japanisches Layout)
KEY_KPLEFTPAREN ( (Ziffernblock)
KEY_KPRIGHTPAREN ) (Ziffernblock)
KEY_KPPLUSMINUS ± (Ziffernblock)
Untertabelle E: Modifikator- und Funktionstasten
  • Standard-Funktionstasten:KEY_F1 bis KEY_F24 (24 Codes).
Code Beschreibung
KEY_LEFTSHIFT Tastenkombination mit der linken Umschalttaste
KEY_RIGHTSHIFT Rechte Umschalttaste
KEY_LEFTCTRL Tastenkombination mit der linken Strg-Taste
KEY_RIGHTCTRL Rechte Strg-Taste als Tastaturmodifikator
KEY_LEFTALT „Links-Alt“-Tastaturmodifikator
KEY_RIGHTALT Rechte Alt-Taste als Modifikator
KEY_LEFTMETA Linke Meta-/Befehlstaste
KEY_RIGHTMETA Rechte Meta-/Befehlstaste
KEY_CAPSLOCK Feststelltaste
KEY_NUMLOCK Num-Taste
KEY_SCROLLLOCK Rollen-Taste
KEY_COMPOSE Compose Character Helper
KEY_FN FN-Taste auf der physischen Tastatur
KEY_FN_ESC Kombinationen mit Funktionstasten
KEY_FN_1 Tastenkombination für Sonderfunktion 1
KEY_FN_2 Tastenkombination für Sonderfunktion 2
KEY_FN_D Tastenkombination für Sonderfunktion D
KEY_FN_E Tastenkombination für Sonderfunktion E
KEY_FN_F Tastenkombination für Sonderfunktionen F
KEY_FN_S Tastenkombination für Sonderfunktionen S
KEY_FN_B Tastenkombination für Sonderfunktion B
Untergeordnete Tabelle F: Gamepads und Joysticks
Code Beschreibung
BTN_A/BTN_B/BTN_C Tasten A/B/C auf der Oberseite des Controllers
BTN_X/BTN_Y/BTN_Z Tasten auf der Oberseite des Controllers X/Y/Z
BTN_START Gamepad-Button für das Startmenü
BTN_SELECT Gamepad-Auswahltaste
BTN_MODE Schalter für den Controllermodus
BTN_TL/BTN_TR Linke / rechte Schultertasten
BTN_TL2/BTN_TR2 Analoge Trigger links / rechts
BTN_THUMBL/BTN_THUMBR Mit linkem / rechtem Stick klicken
BTN_DPAD_UP Gamepad-Trigger „Steuerkreuz – Nach oben“
BTN_DPAD_DOWN Trigger „Steuerkreuztaste ‚Nach unten‘“ des Gamepads
BTN_DPAD_LEFT Linker Trigger des Gamepad-Steuerkreuzes
BTN_DPAD_RIGHT Gamepad-Trigger „Steuerkreuz rechts“
BTN_THUMB Primärer Daumentrigger des Joysticks
BTN_TOP/BTN_TOP2 Obere Tasten des Joysticks
BTN_PINKIE Auslöser für die kleine Finger-Taste des Joysticks
BTN_BASE bis _BASE6 Joystick-Plattform-Basistasten
BTN_DEAD Flag für inaktive Gamepad-Totzone
BTN_TRIGGER Handtrigger für physischen Joystick
BTN_JOYSTICK Generischer Joystick-Eingabecode
Untergeordnete Tabelle G: Maus-, Touch- und Eingabestifteingaben
Code Beschreibung
BTN_MOUSE Allgemeines Mauszeigerereignis
BTN_LEFT Mit der linken Maustaste klicken
BTN_RIGHT Rechte Maustaste drücken
BTN_MIDDLE Mit mittlerer Maustaste klicken
BTN_SIDE Auslöser für seitliche Navigationstaste
BTN_EXTRA Auslöser für zusätzliche Maustaste
BTN_FORWARD Klick auf die Schaltfläche „Weiter“ im Browser
BTN_BACK Klicken auf die Browsernavigation „Zurück“
BTN_TASK Taste für den System-Task-Switcher
BTN_TOUCH Physischer Kontakt mit dem Display erkannt
BTN_STYLUS Nähe des aktiven Eingabestifts
BTN_STYLUS2 Sekundärer Schalter am Stift
BTN_TOOL_PEN Kennung des Eingabestift-Tools
BTN_TOOL_RUBBER ID des Radierer-Tools für den Eingabestift
BTN_TOOL_BRUSH ID des Painter-Pinseltools
BTN_TOOL_PENCIL ID des Tools für den Druckbleistift
BTN_TOOL_AIRBRUSH Airbrush-Tool-ID
BTN_TOOL_FINGER Fingerkontakt mit dem Touchscreen
BTN_TOOL_MOUSE Externe Maus-Tool-ID
BTN_TOOL_LENS Optisches Vergrößerungsobjektiv
BTN_TOOL_DOUBLETAP Flag für die Geschwindigkeit beim Doppeltippen per Geste
BTN_TOOL_TRIPLETAP Flag für die Geschwindigkeit beim dreimaligen Tippen per Touchgeste
Untertabelle H: App-Verknüpfungen
Code Zielaktion
KEY_WWW Standard-Webbrowser wird gestartet
KEY_MAIL Standard-E‑Mail-Client wird geöffnet
KEY_BOOKMARKS Öffnet die Liste der Browserlesezeichen
KEY_CALC Öffnet das Rechner-Dienstprogramm
KEY_FILE Öffnet den lokalen Datei-Explorer
KEY_EDIT Trigger für die Dokumentbearbeitung
KEY_NEW Neuen Trigger erstellen
KEY_OPEN Trigger zum Öffnen von Dokumenten
KEY_SAVE Trigger für das Speichern von Dateien
KEY_CLOSE Trigger für die Aufgabe zum Schließen von Dateien
KEY_PRINT Trigger für Druckaufträge
KEY_COPY Aktion zum Kopieren in den Zwischenablagespeicher
KEY_PASTE Aktion zum Einfügen aus dem Zwischenablagepuffer
KEY_CUT Ausschneiden in Zwischenablage
KEY_UNDO Aktion zum Rückgängigmachen des Zwischenablagepuffers
KEY_REDO Aktion „Wiederholen“ für Zwischenablagepuffer
KEY_CANCEL Puffer für das Auslösen des Stornierungsvorgangs
KEY_FIND Dokumentsuchfunktion
KEY_REFRESH Tool zum Aktualisieren von Dokumenten
KEY_EXIT Dienstprogramm zum Schließen von Dokumenten
KEY_DOCUMENTS Systemdokumente-Portal wird eingeführt
KEY_HOMEPAGE Startet den Browser auf der Startseite
KEY_FAVORITES Öffnet das Browserfavoritenportal
KEY_CHAT Startet den Instant Messenger
KEY_EMAIL Trigger für alternative E‑Mail-Adresse
KEY_FINANCE Open Stock/Finance Utility
KEY_SPORT Tool für das Sport-Tracking öffnen
KEY_SHOP Digitales Shopping-Portal öffnen
KEY_PLAYER Primären Mediaplayer öffnen
KEY_MP3 Primären MP3-Player öffnen
KEY_TEXT Standard-Texteditor öffnen
KEY_LIST Checklist-Tool öffnen
KEY_MEMO Notizblock / Memo-Tool öffnen
KEY_CALENDAR Öffnet das Kalender-/Terminübersichtsportal
KEY_DIRECTORY Öffnet das Adressverzeichnis des Systems
KEY_COMPUTER Öffnet den Specifications Explorer
KEY_TV/KEY_TV2 Startet das Fernsehportal
KEY_RADIO Startet das Radio-Tool
KEY_CD/KEY_DVD Aktiviert das optische Laufwerk
KEY_AUDIO/KEY_VIDEO Zugriff auf Medienspezifikationen
KEY_TUNER Konfiguriert Empfänger/Tuner
KEY_SAT/KEY_SAT2 Satellitenfeeds konfigurieren
KEY_TAPE Kassettenrekorder abspielen
KEY_VCR VCR-Player-Feed abspielen
KEY_VCR2 VCR 2-Player-Feed abspielen
KEY_AUX AUX-Media-Port-Eingänge
KEY_SETUP Menü „Einrichtungskonfiguration“
KEY_PROG1 bis _PROG4 Benutzerdefinierte Programmschlüssel
KEY_ZOOM Darstellungsbereich ein- und auszoomen
KEY_MODE Darstellungsbereichsmodus auswählen
KEY_KEYBOARD Bildschirmtastatur ein-/ausblenden
KEY_LANGUAGE Sprache des Audiotracks wechseln
KEY_TITLE Optionen für Medientitel öffnen
KEY_SUBTITLE Untertitel ein-/ausblenden
KEY_ANGLE Kamerawinkel ändern
KEY_EPG Elektronische Programmübersicht öffnen
KEY_PVR Persönlichen Videorecorder öffnen
KEY_MHP Multimediale Startseite öffnen
KEY_CHANNEL TV‑Kanäle über den Fernsehempfänger öffnen
KEY_CHANNELUP Fernsehsender nach oben einstellen
KEY_CHANNELDOWN TV-Kanal nach unten einstellen
KEY_RED Roter interaktiver Button
KEY_GREEN Grüne interaktive Schaltfläche
KEY_YELLOW Gelber interaktiver Button
KEY_BLUE Blaue interaktive Schaltfläche
KEY_FIRST Option für das erste Element auswählen
KEY_LAST Option „Letztes Element“ auswählen
KEY_NEXT Option für den nächsten Titel auswählen
KEY_PREVIOUS Vorherige Titeloption auswählen
KEY_RESTART Schleife des Mediatracks neu starten
KEY_SLOW Option für die Wiedergabe in Zeitlupe
KEY_AB A-B-Wiederholungsschleife
KEY_PLAYCD Befehl zum Abspielen von CD-Decks
KEY_PAUSECD Befehl zum Pausieren des CD-Decks
KEY_STOPCD Befehl zum Beenden des CD-Decks
KEY_DIGITS Befehl zur Eingabe über das digitale Tastenfeld
KEY_TEEN Option „Tastenfeld-Teenagerwerte“
KEY_TWEN Option „Twen-Werte für Tastenfeld“
KEY_DEL_EOL Bis zum Ende des Zeilenpuffers löschen
KEY_DEL_EOS Bis zum Ende des Bildschirmbuffers löschen
KEY_INS_LINE Neue Zeilenpuffer einfügen
KEY_BRL_DOT1 bis _DOT8 Eingaben über Braillezeilen-Schaltflächen
KEY_VOICECOMMAND Startet die Sprachassistenten-App
KEY_SELECTIVE_SCREEN Löst das regionale Ausschneiden von Screenshots aus
KEY_BATTERY Fragt Benachrichtigungen zum Akku ab
KEY_STAR/KEY_SHARP Symbole auf der Telefontastatur
KEY_PLUS Telefontastatur mit Pluszeichen
KEY_INFO Overlay für Infofeld anzeigen
KEY_TIME Aktuelle Uhrzeit anzeigen
KEY_VENDOR Anfragen zu Anbieterspezifikationen
KEY_ARCHIVE Öffnet das lokale Archivierungstool
KEY_PROGRAM Konfiguriert Programmparameter
KEY_POWER2 Löst die alternative Stromversorgung aus

EV_ABS – Absolute Motion Events

Der Ereignistyp EV_ABS ist wichtig, um präzise Berührungen, Drag-and-drop-Gesten, Multi-Touch-Pinch-Aktionen und Joystick-Anpassungen zu simulieren. Die absoluten Koordinaten unten entsprechen direkt der zugrunde liegenden physischen Bildschirmauflösung.

Code Koordinatenbereich Beschreibung
ABS_MT_TRACKING_ID -1 oder ≥0 Tracking-ID; -1 beendet die Berührung
ABS_MT_POSITION_X 0 bis 1767 X-Koordinate (Pixel Fold)
ABS_MT_POSITION_Y 0 bis 2207 Y-Koordinate (Pixel Fold)
ABS_MT_TOUCH_MAJOR Pixel Breite der Hauptachse des Touchbereichs
ABS_MT_TOUCH_MINOR Pixel Breite der Nebenachse des Touchbereichs
ABS_MT_WIDTH_MAJOR Pixel Breite der Hauptachse des Werkzeugs
ABS_MT_WIDTH_MINOR Pixel Breite der Nebenachse des Tools
ABS_MT_ORIENTATION 0 bis 255 Winkel der Kontaktorientierung
ABS_MT_PRESSURE 0 bis 255 Größe der Kontaktkraft
ABS_MT_DISTANCE mm Abstand des Stifts zum Display beim Hovern
ABS_MT_TOOL_TYPE 0 bis 2 0=Finger, 1=Stift, 2=Bleistift
ABS_MT_BLOB_ID Ganzzahl Kontakt-Blob-ID
ABS_MT_TOOL_X Pixel X-Koordinate der Toolposition
ABS_MT_TOOL_Y Pixel Y-Koordinatenposition des Tools
ABS_MT_SLOT 0 bis N Aktiver Slot (Protokoll B)
ABS_X/_Y/_Z analog Joystick-Koordinatenachsen
ABS_RX/_RY/_RZ analog Rotationsachsen des Joysticks
ABS_THROTTLE/_BRAKE analog Pedale und Lenkung
ABS_HAT0X/_HAT0Y -1/0/1 D-Pad-Hut und POV-Schalter
ABS_PRESSURE 0 bis 255 Kraftstufe für Stift / Zeiger
ABS_DISTANCE mm Schwebestrecke (Eingabestift)
ABS_TILT_X/_TILT_Y Grad Neigungswinkel des Eingabestifts
ABS_VOLUME analog Lautstärke des Controllers

Die Touch-Interaktion unter Android basiert auf Multi-Touch-Protokollen (MT). Moderne Emulatoren implementieren sowohl Protokoll A (zustandslos, Senden von Kontaktpaketen, die durch Synchronisationsmarkierungen getrennt sind) als auch Protokoll B (zustandsbehaftet, Zuweisen von Kontakten zu dedizierten Tracking-Slots). Protokoll B ermöglicht die effiziente Erfassung mehrerer gleichzeitiger Berührungen für Gesten wie das Auf- und Zuziehen zum Zoomen.

EV_REL und EV_SW – Bewegung und Hardwareschalter

Mit der Ereigniskategorie EV_REL werden relative Änderungen des Mauszeigers oder der Koordinaten verwaltet. Sie wird hauptsächlich zum Emulieren externer Mausbewegungen oder Scrollräder verwendet. Mit der Ereigniskategorie EV_SW werden physische Geräteschalter verwaltet, z. B. ob ein Klapphandy oder Tablet zusammengeklappt ist oder ob externe Audiohardware angeschlossen ist.

Code Werte Beschreibung
REL_X Delta Horizontale Cursorbewegung
REL_Y Delta Vertikale Cursorbewegung
SW_LID 0/1 Status des Laptop-Displays (0=Offen, 1=Geschlossen)
SW_TABLET_MODE 0/1 Status des Tabletmodus (0=Aus, 1=Aktiv)
SW_HEADPHONE_INSERT 0/1 Status des Kopfhöreranschlusses (0=Aus, 1=Ein)
SW_MICROPHONE_INSERT 0/1 Status des Mikrofonanschlusses (0=Aus, 1=Ein)
Syntax für die Befehlsweiterleitung

Um diese Codes zu senden, formatieren Sie den Konsolenbefehl mit Typen, Codes und Werten, die durch Doppelpunkte getrennt sind. Sie können mehrere Koordinatenänderungen in einer einzigen Zeichenfolge in die Warteschlange stellen. Wichtig: Hängen Sie immer eine Markierung für die endgültige Synchronisierung (EV_SYN:0:0) an, um anzugeben, dass das Emulator-Framework diese Eingaben zusammenfassen und verarbeiten soll.

Beispiele für Ereignisskripting und Gesten

Da mit Telnet mehrteilige Parameter gesendet werden können, lassen sich realistische physische Gestenfolgen simulieren. Unten finden Sie Rohereignisskriptstrukturen zum Automatisieren von Gesten über die Hostkonsole.

Tippen auf dem Bildschirm simulieren

Um einen sauberen Bildschirmtipp an einer Zielkoordinate auszuführen, weisen Sie eine Tracking-ID zu, geben Sie die X- und Y-Koordinaten auf dem Bildschirm an, simulieren Sie die Berührung, synchronisieren Sie und lassen Sie dann los.

# Press down at coordinate (400, 800) and sync
event send EV_ABS:ABS_MT_TRACKING_ID:1
OK
event send EV_ABS:ABS_MT_POSITION_X:400
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Lift finger up and sync
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Vertikales Scrollen (Wischen) simulieren

Um eine Scroll-Wischgeste auszuführen, halten Sie den Kontakt an der Startkoordinate gedrückt, senden Sie Zwischenkoordinatenframes und lassen Sie den Kontakt am Ende los.

# Finger touch down at start coordinate (500, 1600)
event send EV_ABS:ABS_MT_TRACKING_ID:2
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1600
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Move coordinates upward dynamically
event send EV_ABS:ABS_MT_POSITION_Y:1200
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:400
OK
event send EV_SYN:0:0
OK
# Finger release at coordinate (500, 400)
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Geste zum Zoomen simulieren

Um einen Zoom mit zwei Fingern auszulösen, verwenden Sie aktive MT-Slots (0 und 1), um zwei gleichzeitige Berührungskoordinaten zu verfolgen und zu koordinieren, die sich voneinander entfernen.

# Finger 1 down at (500, 1000) using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:10
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Finger 2 down at (600, 1000) using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:11
OK
event send EV_ABS:ABS_MT_POSITION_X:600
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_SYN:0:0
OK
# Fingers slide apart from each other
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_POSITION_X:300
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_POSITION_X:800
OK
event send EV_SYN:0:0
OK
# Lift Finger 1 using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_SYN:0:0
OK
# Lift Finger 2 using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Wechsel der Kopfhörerverbindung simulieren

Simulieren Sie das Ein- oder Ausstecken von Kopfhörern, um Audio-Routing-Schalter zu testen. Ein Wert von 1 steht für das Einsetzen des Anschlusses und 0 für das Entfernen des Kopfhörers.

# Simulate headphones plugged in
event send EV_SW:SW_HEADPHONE_INSERT:1 EV_SYN:0:0
OK
# Simulate headphones unplugged
event send EV_SW:SW_HEADPHONE_INSERT:0 EV_SYN:0:0
OK
Console-Ereigniscodes auf einem echten Gerät ermitteln

Wenn Sie die genaue Ereignissyntaxsequenz für eine benutzerdefinierte Aktion oder Schaltflächenbewegung ermitteln möchten, stellen Sie eine Verbindung über die ADB-Shell her und führen Sie das Diagnosetool getevent aus. Während Sie mit der Emulator-GUI interagieren, werden in der Konsole die genauen Ereigniscodes, ‑typen und ‑positionen ausgegeben.

# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
  • Ereignis-SMS: Sendet eine Zeichenfolge, die Tastendrücke simuliert. Die Nachricht muss ein UTF-8-String sein. Unicode-Beiträge werden gemäß der aktuellen Geräte-Tastatur rückwärts zugeordnet und nicht unterstützte Zeichen werden ohne Benachrichtigung verworfen.

Steuerelemente für den Energiezustand

  • Stromanzeige: Zeigt den Akku- und Ladestatus an.

  • power ac {on| off}: Legt den Ladestatus für Wechselstrom auf „on“ oder „off“ fest.

  • power status {unknown| charging| discharging| not-charging| full}: Ändert den Akkustatus wie angegeben.

  • power present {true| false}: Legt den Status des Akkus fest.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: Legt den Akkuzustand fest.

  • power capacity percent: Legt den verbleibenden Akkukapazitätszustand als Prozentsatz zwischen 0 und 100 fest.

Status der Netzwerkverbindung (nur Ethernet und Mobilfunk)

  • network status: Prüft den Netzwerkstatus sowie die aktuelle Verzögerung und Geschwindigkeit.

  • network delay latency Ändert die emulierte Netzwerklatenz.

    Mit dem Emulator können Sie verschiedene Netzwerklatenzstufen simulieren, um Ihre App in einer Umgebung zu testen, die den tatsächlichen Laufzeitbedingungen entspricht. Sie können beim Start des Emulators eine Latenzstufe oder einen Latenzbereich festlegen oder die Latenz über die Konsole ändern, während die App im Emulator ausgeführt wird.

    Die Netzwerklatenz kann eines der folgenden Formate haben (Zahlen in Millisekunden):

    Format für Netzwerklatenz:

  • gprs: GPRS mit einem Latenzbereich von mindestens 150 und maximal 550.

  • edge: EDGE/EGPRS, das einen Latenzbereich von mindestens 80 und höchstens 400 ms verwendet.

  • umts: UMTS/3G mit einem Latenzbereich von mindestens 35 und höchstens 200.

  • none: Keine Latenz.

  • num: Emuliert die angegebene Latenz in Millisekunden.

  • min:max: Emuliert den angegebenen Latenzbereich.

    Wenn Sie die Latenz beim Start des Emulators festlegen möchten, verwenden Sie die Emulatoroption -netdelay mit einem unterstützten Latenzwert. Beispiele:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Wenn Sie die Netzwerkverzögerung ändern möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed Mit dem Emulator können Sie verschiedene Netzwerkübertragungsraten simulieren. Sie können beim Start des Emulators eine Übertragungsrate oder einen Bereich festlegen oder die Rate über die Konsole ändern, während die App im Emulator ausgeführt wird.

    Die Netzwerkgeschwindigkeit kann eines der folgenden Formate haben (Zahlen in Kilobit/s):

    Format für Netzwerkgeschwindigkeit:

  • gsm: GSM/CSD mit einer Geschwindigkeit von 14, 4 kbit/s für Up- und Download.

  • hscsd: HSCSD mit einer Geschwindigkeit von 14,4 kbit/s im Upstream und 43,2 kbit/s im Downstream.

  • gprs: GPRS mit einer Geschwindigkeit von 40,0 Mbit/s im Upstream und 80,0 Mbit/s im Downstream.

  • edge: EDGE/EGPRS mit einer Geschwindigkeit von 118,4 Kbit/s im Upstream und 236,8 Kbit/s im Downstream.

  • umts: UMTS/3G mit einer Geschwindigkeit von 128, 0 Kbit/s im Upstream und 1.920 Kbit/s im Downstream.

  • hsdpa: HSDPA mit einer Geschwindigkeit von 348, 0 Mbit/s im Upstream und 14.400,0 Mbit/s im Downstream.

  • lte: LTE mit einer Geschwindigkeit von 58.000 kbit/s im Upload und 173.000 kbit/s im Download.

  • evdo: EVDO mit einer Geschwindigkeit von 75.000 Upstream und 280.000 Downstream.

  • Voll: Unbegrenzte Geschwindigkeit, hängt jedoch von der Verbindungsgeschwindigkeit Ihres Computers ab.

  • num: Legt eine genaue Rate in Kilobit/s für Upload und Download fest.

  • up:down: Legt genaue Raten in Kilobit/s für Upload und Download separat fest.

    Verwenden Sie die Emulatoroption -netspeed, um die Netzwerkgeschwindigkeit beim Start des Emulators festzulegen. Beispiele:

    emulator -netspeed gsm @Pixel_API_26
    emulator -netspeed 14.4,80 @Pixel_API_26
    

    Wenn Sie die Netzwerkgeschwindigkeit ändern möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Pakete in eine Datei senden. In der folgenden Liste werden die Parameter und Parameterwerte beschrieben:

    Hinweis:Ab Android Emulator 36.5 und höher wird der WLAN-Verbindungsverkehr standardmäßig von netsim verarbeitet. Mit dem Konsolenbefehl „network capture“ wird nur der alte Mobilfunk-/WAN-Traffic erfasst, der über den QEMU-Slirp-Stack weitergeleitet wird. Informationen zum Erfassen von WLAN-, Bluetooth- oder erweiterten Netzwerkpaketen in modernen Emulatorversionen finden Sie im Leitfaden zu erweiterten Emulatornetzwerken unter Netzwerkverkehr erfassen.

  • start file: Startet die Erfassung von Netzwerkpaketen. Aus Sicherheitsgründen muss die Datei ein einfacher Dateiname sein (keine Pfadtrennzeichen wie / und kein ..). Die Datei mit der Paketerfassung wird im Inhaltsverzeichnis Ihres AVD im Ordner console_out/ gespeichert (z. B. ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: Das Senden von Paketen an die angegebene Datei wird beendet.

Telefonie-Emulation

Der Android-Emulator enthält eigene emulierte GSM- und CDMA-Modems, mit denen Sie Telefoniefunktionen im Emulator simulieren können. Mit GSM können Sie beispielsweise eingehende Anrufe simulieren und Datenverbindungen herstellen und beenden. Bei CDMA geben Sie eine Aboquelle und die bevorzugte Roaming-Liste an. Das Android-System behandelt simulierte Anrufe genau wie tatsächliche Anrufe. Der Emulator unterstützt kein Anrufaudio.

  • gsm {call| accept| cancel| busy} phonenumber Die GSM-Parameter sind:

    • call: Simuliert einen eingehenden Anruf von phonenumber.
    • accept: Nimmt einen eingehenden Anruf von der Telefonnummer an und ändert den Anrufstatus in „Aktiv“. Sie können den Anrufstatus nur dann in „Aktiv“ ändern, wenn der aktuelle Status „Warten“ oder „Gehalten“ ist.
    • cancel: Beendet einen eingehenden oder ausgehenden Anruf von oder an die Telefonnummer.
    • busy: Beendet einen ausgehenden Anruf an „phonenumber“ und ändert den Anrufstatus in „busy“. Sie können den Anrufstatus nur dann in „Beschäftigt“ ändern, wenn der aktuelle Status „Warten“ ist.
  • gsm {data| voice} state Mit dem Befehl für den Datenstatus wird der Status der GPRS-Datenverbindung geändert, mit dem Befehl für den Sprachstatus der Status der GPRS-Sprachverbindung. Das funktioniert so:

    • Nicht registriert: Kein Netzwerk verfügbar.
    • home: Im lokalen Netzwerk, kein Roaming.
    • Roaming: Im Roaming-Netzwerk.
    • Suche: Es wird nach Netzwerken gesucht.
    • Verweigert: Nur Notrufe.
    • off: Wie „unregistered“.
    • An: Wie zu Hause.
  • gsm hold: Ändert den Status eines Anrufs in „Warten“. Sie können den Anrufstatus nur dann in „Warten“ ändern, wenn der aktuelle Status „Aktiv“ oder „Warten“ ist.

  • gsm list: Listet alle eingehenden und ausgehenden Anrufe und deren Status auf.

  • gsm status (GSM-Status): Gibt den aktuellen GSM-Sprach-/Datenstatus an. Die Werte sind die, die für die Sprach- und Datenbefehle beschrieben werden.

  • gsm signal {rssi| ber} Ändert die gemeldete Signalstärke (rssi) und Bitfehlerrate (ber) in den nächsten 15 Sekunden der Aktualisierung. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:

    • rssi: Der Bereich liegt zwischen 0 und 31. 99 steht für „unbekannt“.
    • ber: Der Bereich liegt zwischen 0 und 7 sowie 99 für „unbekannt“.
  • gsm signal-profile num: Legt das Signalstärkeprofil fest. num ist eine Zahl zwischen 0 und 4.

  • cdma ssource source Legt die aktuelle CDMA-Aboquelle fest. Die Quelle ist eine netzwerkbasierte Zulassungsliste, die die Abonnenten des CDMA-Mobilfunkanbieters und ihre Werte enthält:

    • nv: Liest das Abo aus dem nichtflüchtigen RAM.
    • ruim: Liest das Abo aus dem Removable User Identity Module (RUIM).
  • cdma prl_version version: Gibt die aktuelle Version der Preferred Roaming List (PRL) aus. Die Versionsnummer bezieht sich auf die PRL-Datenbank, die Informationen enthält, die während der Systemauswahl und des Erfassungsprozesses verwendet werden.

Sensoren im Emulator verwalten

Diese Befehle beziehen sich darauf, welche Sensoren im AVD verfügbar sind. Neben der Verwendung des Sensorbefehls können Sie die Einstellungen im Emulator auch auf dem Bildschirm „Virtuelle Sensoren“ auf den Tabs „Beschleunigungsmesser“ und „Zusätzliche Sensoren“ aufrufen und anpassen.

  • Sensorstatus: Hier werden alle Sensoren und ihr Status aufgeführt.

  • sensor get sensor-name: Ruft die Einstellungen für „sensor-name“ ab. Im folgenden Beispiel wird der Wert für den Beschleunigungssensor abgerufen:

    sensor get acceleration
    acceleration = 2.23517e-07:9.77631:0.812348
    

    Die durch Doppelpunkte(:) getrennten Beschleunigungswerte beziehen sich auf die x-, y- und z-Koordinaten für die virtuellen Sensoren.

  • sensor set sensor-name value-x:value-y:value-z: Legt die Werte für sensor-name fest. Im folgenden Beispiel wird der Beschleunigungssensor auf die durch Doppelpunkte getrennten x-, y- und z-Werte festgelegt.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

SMS-Emulation

  • sms send sender-phone-number textmessage Generiert eine emulierte eingehende SMS. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:

    • sender-phone-number: Enthält einen beliebigen numerischen String.
    • textmessage: Die SMS-Nachricht.

    Im folgenden Beispiel wird die Nachricht „Hallo“ an die Telefonnummer 4085555555 gesendet:

    sms send 4085555555 hi there
    

Die Konsole leitet die SMS an das Android-Framework weiter, das sie an eine App auf dem Emulator übergibt, die SMS verarbeitet, z. B. die Messages App. Wenn Sie 10 Zahlen übergeben, wird sie von der App als Telefonnummer formatiert. Längere oder kürzere numerische Strings werden so angezeigt, wie Sie sie gesendet haben.

Fingerabdrucksimulation

  • finger touch fingerprint-id: Simuliert, dass ein Finger den Sensor berührt.

  • finger remove: Simuliert das Entfernen eines Fingers.

Eine Anleitung zur Verwendung dieser Befehle finden Sie im folgenden Abschnitt zur Simulation und Validierung von Fingerabdrücken.

Bildschirmaufnahme

Mit dem Befehl „screen record“ können Sie direkt vom Hostsystem aus hochwertige Videodateien des physischen Displays des Emulators aufnehmen. Das ist sehr nützlich für Pipelines zur kontinuierlichen Integration und für die automatische Fehlerberichterstellung.

  • screenrecord {start| stop} file Startet oder beendet die Bildschirmaufzeichnung.
    • start file: Startet die Videoaufzeichnung. Die Ausgabedatei muss mit der obligatorischen Erweiterung .webm enden. Das aufgenommene Video wird direkt im Konsolenausgabeverzeichnis Ihres AVD gespeichert: ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: Beendet die aktive Bildschirmaufzeichnung.

Automatisierung und Makro

Mit dem Automatisierungs-Subsystem können Entwickler Makrostatusübergänge auf dem ausgeführten virtuellen Gerät aufzeichnen und wiedergeben, um automatisierte Testläufe auszuführen.

  • automation {record| stop-record| play| stop-play} Verwaltet automatisierte Makroaufzeichnungen.
    • record: Beginnt mit der Aufzeichnung von Änderungen des Gerätestatus und Eingaben.
    • stop-record: Beendet die aktuelle Makroaufzeichnung.
    • play: Beginnt mit der Wiedergabe einer aufgezeichneten Makrosequenz.
    • stop-play: Die aktive Makro-Wiedergabesequenz wird angehalten.

Physik (6 Freiheitsgrade)

Mit den Physikbefehlen wird die Aufzeichnung von räumlichen Posen für physische Bewegungsmodelle mit sechs Freiheitsgraden (6DoF) verwaltet, die zur Simulation von erweitertem Motion Tracking verwendet werden.

  • physics {record-gt| stop} Verwaltet Aufnahmen von Modellen für physische Posen.
    • record-gt: Beginnt mit der Aufzeichnung von 6DoF-Bewegungsdaten für die Ground Truth.
    • stop: Der aktuelle Prozess zur Aufzeichnung von Ground Truth wird angehalten.

Erweiterte Gerätesteuerung

In diesem Abschnitt werden hochspezialisierte Konsolenbefehlsendpunkte für erweiterte Emulationskonfigurationen zusammengefasst, darunter Netzwerkproxys, Konfigurationen mit mehreren Displays, Rendering-Überschreibungen und direktes Hypervisor-Debugging.

  • multidisplay {add| del} Fügt sekundäre virtuelle Monitore hinzu oder löscht sie, um Konfigurationen mit mehreren Bildschirmen zu testen. Hinweis:Sekundäre Monitore werden in faltbaren Profilen wie dem Pixel Fold oder dem Resizable-Emulator nicht unterstützt.

  • proxy {set| clear} Konfiguriert die Netzwerk-Proxy-Weiterleitung programmatisch über die Konsole.

    • set host port: Konfiguriert die Einstellungen für den Zielproxy.
    • clear: Setzt die Proxykonfigurationen auf die Standardeinstellungen zurück. Hinweis:Proxy-Set-Vorgänge schlagen in monitorlosen Ausführungsumgebungen fehl.
  • virtualscene-image {wall| table} image_path Passt die Hintergrundwände oder horizontalen Tische an, die im Kamerafeed der virtuellen Szene angezeigt werden, mit einer benutzerdefinierten Bilddatei an.

  • resize-display scale Passt die Bildschirmauflösung dynamisch zwischen voreingestellten Skalierungen an. Hinweis:Auflösungsanpassungen werden in monitorlosen Konfigurationen nicht unterstützt.

  • nodraw {on| off} Deaktiviert das Rendern der physischen Benutzeroberfläche auf dem Hostbildschirm, um den Systemarbeitsspeicher und die GPU-Last bei umfangreichen automatisierten Hintergrundläufen ohne Benutzeroberfläche zu reduzieren.

  • grpc port Konfiguriert die erweiterte programmatische Gerätesteuerung über benutzerdefinierte gRPC-Port-Endpunkte.

  • qemu monitor Bietet direkten interaktiven Terminalzugriff auf die Konsole des zugrunde liegenden Hypervisors. Dieser Befehl kann nur über aktive Telnet-Konsolensitzungen eingegeben werden.

  • icebox track pid Aktiviert automatische System-Snapshots, wenn im angegebenen App-Prozess eine unbehandelte Ausnahme oder ein Absturz auftritt.

  • phonenumber number Legt die virtuelle lokale Telefonnummer des Zielgeräts fest.

Programmatische gRPC-Schnittstelle

Moderne Emulatorversionen unterstützen neben der alten Telnet-Konsole auch eine leistungsstarke programmatische gRPC-Schnittstelle. Die Telnet-Konsole eignet sich zwar gut für schnelle interaktive Sitzungen oder einfache Skripts, die gRPC-Schnittstelle ist jedoch für leistungsstarke, sichere und robuste automatisierte Steuerung in Continuous Integration (CI) und Headless-Umgebungen konzipiert. Durch die Bereitstellung direkter Dienstendpunkte entfällt bei gRPC die Notwendigkeit, Textstreams zu parsen, Terminal-Session-Handshakes zu verwalten oder unverschlüsselte localhost-Ports freizugeben.

Die folgende Tabelle enthält einen Vergleich der Leistung, Sicherheit und Funktionen der alten Telnet-Konsole und der modernen programmatischen gRPC-Schnittstelle, damit Sie die richtige Wahl treffen können:

Funktion Telnet-Konsole gRPC-Schnittstelle
Optimal für Manuelles Debugging, interaktive Sitzungen Monitorlose CI/CD-Umgebungen, umfangreiche automatisierte Testumgebungen.
Geschwindigkeit Langsamer; Text-Overhead, Verbindungslatenz. Optimiert; gemultiplextes HTTP/2, schnelles Proto.
Sicherheit Nicht verschlüsselt; lokale Ports (5554–5585). Kann mit TLS gesichert werden, funktioniert über Netzwerke.
Streams Nicht unterstützt; nur Anfrage/Antwort. Streams für Logcat und Gast-Audioaufnahmen.
Medien Schreibt Ausgabedateien auf die Host-/Gastfestplatte. Direkte binäre Puffer über das Kabel.
Gastbetriebssystem Beschränkt auf feste Emulatorbefehle. Führt native Bash-Shell-Befehle des Gastbetriebssystems aus.

gRPC starten und aufrufen

Wenn Sie die gRPC-Endpunkte verwenden möchten, starten Sie den Android-Emulator über die Befehlszeile und geben Sie das Flag -grpc an, um den Loopback-Zielport festzulegen.

# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold

Sobald der Emulator mit aktiviertem gRPC-Dienst ausgeführt wird, können Sie programmatische RPC-Aufrufe ausführen. Verwenden Sie für Befehlszeilentests das grpcurl-Dienstprogramm, um mit den Diensten des Emulators zu kommunizieren. Alle Anfragen sind im JSON-Format formatiert und werden als Klartext gesendet.

# Query the status of the virtual device using grpcurl
grpcurl -plaintext -d '{}' localhost:8556 \
  android.emulation.control.EmulatorController/getStatus

# Simulate an incoming phone call
grpcurl -plaintext -d '{"operation": "InitCall", "number": "1234567890"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendPhone

# Simulate typing text into the guest OS
grpcurl -plaintext -d '{"text": "Hello"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendKey

Telnet-Konsole zu gRPC-Dienstzuordnung

In der folgenden Referenztabelle werden die alten Telnet-Konsolenbefehle den entsprechenden gRPC-Diensten und ‑Methoden zugeordnet. Außerdem wird gezeigt, wie gängige Interaktionen mit virtuellen Geräten programmatisch automatisiert werden können:

Kategorie Alter Telnet-Befehl gRPC-Dienst / Methode
Status ping EmulatorController/getStatus
Status avd name incubating.AvdService/getAvdInfo
Status kill EmulatorController/setVmState
Status restart EmulatorController/setVmState
Stromversorgung power display EmulatorController/getBattery
Stromversorgung power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
Sensoren sensor set incubating.SensorService/setSensor
Biometrisches Verfahren finger touch EmulatorController/sendFingerprint
Haltung posture EmulatorController/setPosture
Haltung physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
GSM-Anruf gsm call EmulatorController/sendPhone
GSM-Anruf phonenumber EmulatorController/setPhoneNumber
Weiterleitung redir add Waterfall/ForwardPort
Eingabe event send EV_KEY EmulatorController/sendKey
Eingabe event send EV_ABS EmulatorController/sendTouch
Medien screenrecord incubating.ScreenRecording
Rendering nodraw EmulatorController/setDisplayMode
Snapshots avd snapshot list SnapshotService/ListSnapshots
Snapshots avd snapshot load/save SnapshotService/LoadSnapshot

Programmatische Befehle, die nur für gRPC gelten

Die gRPC-Schnittstelle bietet mehrere innovative Funktionen, die über alte Telnet-Konsolenverbindungen physisch nicht ausgeführt werden können. Dazu gehören das direkte Logcat-Streaming, die bidirektionale Audioaufnahme oder -einspeisung, Änderungen an der Host-GUI und der direkte Shell-Zugriff.

gRPC-Dienst / Methode Parameter Funktion
streamLogcat {"maxLines": 100} Streamt logcat-Ausgaben des Gastsystems
streamAudio {} Streamt Lautsprecher-Audio über das Kabel
injectAudio {"audio": "..."} Mikrofon-Audiostreams werden eingefügt
UiController {"theme": "DARK"} Ändert die Fensterdesigns des Hostfensters
Waterfall/Exec {"cmd": "ls"} Führt native Shell-Befehle des Gastbetriebssystems aus

Fingerabdrucksimulation und ‑validierung

Abbildung 1. Bildschirm für die Fingerabdruckauthentifizierung

Mit dem Befehl „finger“ können Sie die Fingerabdruckauthentifizierung für Ihre App simulieren und validieren. Sie benötigen SDK Tools 24.3 oder höher und Android 6.0 (API-Level 23) oder höher.

So simulieren und validieren Sie die Fingerabdruckauthentifizierung:

  1. Wenn Sie noch keine Fingerabdruck-ID haben, registrieren Sie einen neuen Fingerabdruck im Emulator. Wählen Sie dazu Einstellungen > Sicherheit > Fingerabdruck aus und folgen Sie der Anleitung.

  2. Richten Sie Ihre App so ein, dass sie die Fingerabdruckauthentifizierung akzeptiert. Nachdem Sie diese Einrichtung abgeschlossen haben, wird auf Ihrem Gerät der Bildschirm für die Fingerabdruckauthentifizierung angezeigt.

  3. Während in Ihrer App der Bildschirm für die Fingerabdruckauthentifizierung angezeigt wird, rufen Sie die Konsole auf, geben Sie den Befehl finger touch und die von Ihnen erstellte Fingerabdruck-ID ein. Dadurch wird eine Berührung mit dem Finger simuliert.

  4. Geben Sie dann den Befehl finger remove ein, um das Entfernen des Fingers zu simulieren. Ihre App sollte so reagieren, als hätte ein Nutzer den Fingerabdrucksensor berührt und dann den Finger wieder entfernt.