Emulator-Konsolenbefehle senden

Jedes ausgeführte virtuelle Gerät bietet eine Konsole, über die Sie die emulierte Geräteumgebung abfragen und steuern können. Sie können die Konsole beispielsweise verwenden, um die Portweiterleitung, Netzwerkmerkmale und Telefonieereignisse zu verwalten, während Ihre App im 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 auf die Konsole zugreifen und Befehle über ein Terminalfenster eingeben möchten, stellen Sie über Telnet eine Verbindung zum Konsolenport her und geben Sie Ihr Authentifizierungstoken an. Wenn in der Konsole OK angezeigt wird, können Sie Befehle eingeben. 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
    

    In der Titelleiste des Emulatorfensters wird die Portnummer der Console aufgeführt, wenn der Emulator in einem separaten Fenster ausgeführt wird, aber nicht, 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 gibt der Befehl adb devices eine Liste der ausgeführten virtuellen Geräte und ihrer Konsolenportnummern aus. 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. Nachdem in der Console OK angezeigt wurde, geben Sie den Befehl auth auth_token ein.

    Bevor Sie Konsolenbefehle eingeben können, ist eine Authentifizierung für die Emulatorkonsole erforderlich. auth_token muss mit dem Inhalt der Datei .emulator_console_auth_token in Ihrem Basisverzeichnis übereinstimmen.

    Wenn diese Datei nicht vorhanden ist, wird sie mit dem Befehl telnet localhost console-port erstellt. Sie 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, geben Sie Konsolenbefehle ein.

    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 quit oder exit ein, um die Konsolensitzung zu beenden.

Hier ein Beispiel für eine Sitzung:

$ 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 bleiben muss, verwenden Sie die Tastenkombination adb emu, mit der der Befehl ausgeführt und die Steuerung sofort an die aufrufende Shell zurückgegeben wird:

adb emu command commandParameter

Der Aufruf mit adb emu stellt eine Verbindung zum verfügbaren Emulator her. Wenn mehrere Emulatoren gleichzeitig ausgeführt werden, müssen Sie die Seriennummer des gewünschten Emulators übergeben:

adb -s emulator-serial emu command commandParameter

Emulator-Befehlsreferenz

In den folgenden Listen werden die Befehle der Emulator-Konsole mit ihren Parametern und Werten beschrieben:

Allgemeine Befehle

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

    • 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, der „running“ oder „stopped“ sein kann.
    • name: Fragt den Namen des virtuellen Geräts ab.
  • avd snapshot {list| save name| load name| delete name} speichert den Gerätestatus in Snapshots und stellt ihn so wieder her:

    • list: Listet alle gespeicherten Snapshots auf.
    • save name: Speichert den Snapshot unter dem angegebenen 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: Klappt das Gerät zusammen, um die kleinere Bildschirmkonfiguration anzuzeigen, wenn das Gerät faltbar und derzeit aufgeklappt ist.

  • unfold: Klappt das Gerät auf, um die größere Bildschirmkonfiguration 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 in 45-Grad-Schritten gegen den Uhrzeigersinn.

Emulator zum Absturz bringen

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

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

Debugging-Tags

  • debug tags ...: Aktiviert oder deaktiviert Debug-Nachrichten 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 Radio-Tag aktiviert:

    debug radio
    

Portweiterleitung

  • 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 den in einem Emulator ausgeführten Apps gemeldet wird, indem ein GPS-Fix an den Emulator gesendet wird.

Sobald ein virtuelles Gerät ausgeführt wird, kannst du einen der folgenden Geo-Befehle ausführen. Der Emulator legt den von Ihnen eingegebenen Standort fest, indem er einen Anbieter für simulierte Standortdaten erstellt. Dieser Anbieter reagiert auf Standort-Listener, die von Apps festgelegt wurden, und stellt dem LocationManager den Standort zur Verfügung. Jede App kann den Standortmanager abfragen, um die aktuelle GPS-Position für das emulierte Gerät abzurufen, indem sie LocationManager.getLastKnownLocation("gps") aufruft.

  • geo fix longitude latitude [altitude] [satellites] [velocity]: Sendet eine GPS-Position an den Emulator. Geben Sie den Längen- und Breitengrad in Dezimalgrad an. Verwenden Sie eine Zahl von 1 bis 12, um die Anzahl der Satelliten anzugeben, die zur Bestimmung der Position verwendet werden sollen. 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 Hardwareereignisse

Mit dem Hardware-Ereignis-Subsystem der Emulator-Konsole können Sie praktisch jede physische Interaktion mit dem Gerät simulieren. Dazu gehören physische Tasten, Touch- und Gestensteuerung, Drehregler, Joystick-Eingaben und Hardwareschalter.

  • event types: Listet alle gefälschten Ereignistypen auf. Bei Ereignissen mit Codes wird die Anzahl der Codes rechts in Klammern aufgeführt. 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: Listet die Ereigniscodes für den angegebenen gefälschten Ereignistyp auf.

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

EV_KEY – Tastencode-Referenzen

Der Ereignistyp EV_KEY wird verwendet, um das Drücken und Loslassen von Tasten zu simulieren. In den folgenden Tabellen wird die umfangreiche Liste der unterstützten Schlüsselcodes in logische Kategorien unterteilt. Für jeden Tastencode wird durch das Senden des Werts 1 ein Drücken simuliert, während der Wert 0 ein Loslassen simuliert. Der Wert 2 steht für die Tastenwiederholung.

Untertabelle A: Android-Systemschlüssel
Code Beschreibung
KEY_HOME Auslöser für 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öser „Lautertaste“
KEY_VOLUMEDOWN Auslöser „Leisertaste“
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 Auslöser für den Befehl „Schlafen“
KEY_WAKEUP Aktivierungsbefehl-Trigger
KEY_NOTIFICATION Benachrichtigungsleiste öffnen
KEY_MUTE Audioausgabe des Systems stummschalten
KEY_MICMUTE Mikrofoneingang stummschalten
KEY_BRIGHTNESSDOWN Helligkeit des Displays verringern
KEY_BRIGHTNESSUP Helligkeit des Displays erhöhen
KEY_PHONE Standard-Telefon-App öffnen
KEY_SEND Anruf starten oder senden
KEY_HEADSETHOOK Headset-Aufhänger (Annehmen/Auflegen)
KEY_SCREEN Befehl „Bildschirmschoner aktiv“
KEY_CONFIG Menü „Konfigurationssystem“
KEY_SWITCHVIDEOMODE Videomodus des Systems wechseln
KEY_KBDILLUMTOGGLE Tastaturbeleuchtung ein- oder ausschalten
Untertabelle 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 Titel zurückspulen
KEY_FASTFORWARD Aktiven Titel vorspulen
KEY_RECORD Befehl zum Aufzeichnen des Triggers
KEY_SHUFFLE Zufallswiedergabe aktivieren/deaktivieren
KEY_REPEAT Wiederholte Wiedergabe aktivieren/deaktivieren
KEY_MEDIA Medientasten-Trigger
Untertabelle C: Navigation und allgemeine Tastaturen
Code Beschreibung
KEY_UP Steuerkreuztaste „Nach oben“
KEY_DOWN Steuerkreuztaste „Nach unten“
KEY_LEFT Steuerkreuztaste „Nach links“
KEY_RIGHT Steuerkreuztaste „Nach rechts“
KEY_PAGEUP Navigation nach oben
KEY_PAGEDOWN Bild-ab-Navigation
KEY_INSERT Schlüsselauslöser einfügen
KEY_DELETE Tastentrigger löschen
KEY_ENTER Eingabetaste als Trigger
KEY_ESC Escape-Taste als Trigger
KEY_TAB Tabulatortaste als Trigger
KEY_SPACE Leertaste als Auslöser
KEY_BACKSPACE Rücktasten-Trigger
KEY_CLEAR Eingabepuffer löschen
KEY_CANCEL Aktive Aktion abbrechen
KEY_OK Auswahl bestätigen/OK
KEY_SELECT Trigger für Element auswählen
KEY_GOTO Zum angegebenen Ort gehen
KEY_HELP Hilfe zum Zugriffskontext
Untertabelle D: Alphanumerische Zeichen und Tastenfeldsymbole
  • 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: Modifikatortasten und Funktionstasten
  • Standard-Funktionstasten: KEY_F1 bis KEY_F24 (24 Codes).
Code Beschreibung
KEY_LEFTSHIFT Tastaturmodifikator „Umschalttaste links“
KEY_RIGHTSHIFT Rechte Umschalttaste als Tastaturmodifikator
KEY_LEFTCTRL Linke Strg-Taste
KEY_RIGHTCTRL Modifikatortaste „Rechte Strg-Taste“
KEY_LEFTALT Linke Alt-Taste als Tastaturmodifikator
KEY_RIGHTALT Rechte Alt-Taste als Modifikatortaste
KEY_LEFTMETA Linke Meta-/Befehlstaste
KEY_RIGHTMETA Rechte Meta-/Befehlstaste
KEY_CAPSLOCK Feststelltaste aktivieren/deaktivieren
KEY_NUMLOCK Num-Taste auf der Tastatur
KEY_SCROLLLOCK Rollen-Taste aktivieren/deaktivieren
KEY_COMPOSE Hilfe zum Erstellen von Zeichen
KEY_FN Fn-Taste auf physischer Tastatur
KEY_FN_ESC Funktionstastenkombinationen
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 Sonderfunktion F
KEY_FN_S Sondertaste S
KEY_FN_B Sonderfunktion B
Untergeordnete Tabelle F: Gamepads und Joysticks
Code Beschreibung
BTN_A/BTN_B/BTN_C Controller-Tasten A/B/C
BTN_X/BTN_Y/BTN_Z Controller-Tasten X/Y/Z
BTN_START Startmenü-Button auf dem Gamepad
BTN_SELECT Gamepad-Auswahltaste
BTN_MODE Controllermodus-Schalter
BTN_TL/BTN_TR Linke/rechte Schultertaste
BTN_TL2/BTN_TR2 Linker/rechter analoger Trigger
BTN_THUMBL/BTN_THUMBR Mit linkem/rechtem Stick klicken
BTN_DPAD_UP Gamepad-Steuerkreuztaste „Nach oben“
BTN_DPAD_DOWN Gamepad-Steuerkreuztaste „Nach unten“
BTN_DPAD_LEFT Gamepad-Steuerkreuztaste „Nach links“
BTN_DPAD_RIGHT Gamepad-Steuerkreuz – rechter Trigger
BTN_THUMB Primärer Daumentrigger des Joysticks
BTN_TOP/BTN_TOP2 Obere Tasten des Joysticks
BTN_PINKIE Joystick-Trigger für den kleinen Finger
BTN_BASE bis _BASE6 Tasten an der Joystick-Plattformbasis
BTN_DEAD Flag für inaktive Gamepad-Deadzone
BTN_TRIGGER Handtrigger des physischen Joysticks
BTN_JOYSTICK Generischer Joystick-Eingabecode
Untertabelle G: Maus-, Touch- und Eingabestift-Eingaben
Code Beschreibung
BTN_MOUSE Allgemeines Mauszeigerereignis
BTN_LEFT Mit der linken Maustaste klicken
BTN_RIGHT Rechte Maustaste drücken
BTN_MIDDLE Klick mit dem Scrollrad
BTN_SIDE Auslöser für die seitliche Navigationstaste
BTN_EXTRA Auslöser für zusätzliche Maustaste
BTN_FORWARD Klick auf die Schaltfläche „Weiter“ im Browser
BTN_BACK Klick auf „Zurück“ im Browser
BTN_TASK Taste zum Wechseln zwischen Systemaufgaben
BTN_TOUCH Physischer Kontakt mit dem Display erkannt
BTN_STYLUS Nähe des aktiven Eingabestifts
BTN_STYLUS2 Sekundäre Taste am Eingabestift
BTN_TOOL_PEN Eingabestift-Tool-ID
BTN_TOOL_RUBBER Kennung für das Radierer-Tool des Eingabestifts
BTN_TOOL_BRUSH Pinseltool-ID
BTN_TOOL_PENCIL Kennzeichnung des Zeichenstift-Tools
BTN_TOOL_AIRBRUSH Airbrush-Tool-Kennung
BTN_TOOL_FINGER Fingerkontakt mit dem Touchscreen
BTN_TOOL_MOUSE Kennung für externes Maus-Tool
BTN_TOOL_LENS Optische Lupe
BTN_TOOL_DOUBLETAP Flag für die Doppeltippgeschwindigkeit bei Touch-Gesten
BTN_TOOL_TRIPLETAP Flag für die Geschwindigkeit der Touch-Geste „Dreimal tippen“
Untertabelle H: App-Verknüpfungen
Code Zielaktion
KEY_WWW Startet den Standard-Webbrowser
KEY_MAIL Öffnet den Standard-E‑Mail-Client
KEY_BOOKMARKS Öffnet die Liste der Browserlesezeichen
KEY_CALC Öffnet den Rechner
KEY_FILE Öffnet den lokalen Datei-Explorer
KEY_EDIT Trigger für Dokumentbearbeitung
KEY_NEW Neuen Trigger für Dokument erstellen
KEY_OPEN Trigger zum Öffnen von Dokumenten
KEY_SAVE Trigger für Dateispeicheraufgabe
KEY_CLOSE Trigger für Aufgabe zum Schließen von Dateien
KEY_PRINT Trigger für Dateidruckaufgabe
KEY_COPY Aktion zum Kopieren in die Zwischenablage
KEY_PASTE Aktion zum Einfügen des Zwischenablagepuffers
KEY_CUT Aktion zum Ausschneiden in die Zwischenablage
KEY_UNDO Aktion zum Rückgängigmachen des Zwischenablagepuffers
KEY_REDO Aktion zum Wiederholen des Zwischenablagepuffers
KEY_CANCEL Trigger für den Abbruch des Puffers
KEY_FIND Dienstprogramm für die Dokumentsuche
KEY_REFRESH Dienstprogramm zum Aktualisieren von Dokumenten
KEY_EXIT Dienstprogramm zum Schließen von Dokumenten
KEY_DOCUMENTS Öffnet das Portal für Systemdokumente
KEY_HOMEPAGE Startet den Browser mit der Startseite
KEY_FAVORITES Öffnet das Portal für Browserfavoriten
KEY_CHAT Startet Instant Messenger
KEY_EMAIL Trigger für die Einführung alternativer E‑Mail-Adressen
KEY_FINANCE Aktien-/Finanzdienstprogramm öffnen
KEY_SPORT Sport-Tracking-Dienstprogramm öffnen
KEY_SHOP Digitales Shoppingportal öffnen
KEY_PLAYER Primären Mediaplayer öffnen
KEY_MP3 Primären MP3-Player öffnen
KEY_TEXT Standard-Texteditor öffnen
KEY_LIST Checklisten-Dienstprogramm öffnen
KEY_MEMO Notizblock/Memo-Dienstprogramm öffnen
KEY_CALENDAR Öffnet das Kalender-/Terminportal
KEY_DIRECTORY Öffnet das Adressverzeichnis des Systems
KEY_COMPUTER Öffnet den Spezifikations-Explorer
KEY_TV/KEY_TV2 Öffnet das Fernsehportal
KEY_RADIO Startet das Radio-Dienstprogramm
KEY_CD/KEY_DVD Aktiviert das optische Laufwerk
KEY_AUDIO/KEY_VIDEO Greift auf Medienspezifikationen zu
KEY_TUNER Konfiguriert Empfänger/Tuner
KEY_SAT/KEY_SAT2 Konfiguriert Satellitenfeeds
KEY_TAPE Kassettendeck abspielen
KEY_VCR Feed des Videorekorders abspielen
KEY_VCR2 Feed des VCR 2-Players abspielen
KEY_AUX AUX-Eingänge
KEY_SETUP Menü „Einrichtungskonfiguration“
KEY_PROG1 bis _PROG4 Benutzerdefinierte Programmschlüssel
KEY_ZOOM Zoom-Darstellungsbereich ein-/ausblenden
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 Untertiteloberfläche ein-/ausblenden
KEY_ANGLE Kamerawinkel ändern
KEY_EPG Elektronischen Programmführer öffnen
KEY_PVR Persönlichen Videorecorder öffnen
KEY_MHP Offene Multimedia-Plattform für das Zuhause
KEY_CHANNEL TV-Tuner-Kanäle öffnen
KEY_CHANNELUP TV-Kanal nach oben wechseln
KEY_CHANNELDOWN TV-Kanal nach unten wechseln
KEY_RED Rote interaktive Schaltfläche
KEY_GREEN Grüne interaktive Schaltfläche
KEY_YELLOW Gelber interaktiver Button
KEY_BLUE Blue interactive button
KEY_FIRST Erste Artikeloption auswählen
KEY_LAST Option „Letztes Element“ auswählen
KEY_NEXT Option „Nächsten Titel auswählen“
KEY_PREVIOUS Option „Vorherigen Titel auswählen“
KEY_RESTART Wiederholung des Medientracks neu starten
KEY_SLOW Option für Zeitlupenwiedergabe
KEY_AB A-B-Wiederholungssequenzschleife
KEY_PLAYCD Befehl zum Abspielen auf dem CD-Deck
KEY_PAUSECD CD-Deck-Pausenbefehl
KEY_STOPCD CD-Deck-Stoppbefehl
KEY_DIGITS Befehl für die Eingabe über das digitale Tastenfeld
KEY_TEEN Option für Teenager-Werte auf dem Tastenfeld
KEY_TWEN Option „Tastenfeld-Twen-Werte“
KEY_DEL_EOL Bis zum Ende des Zeilenpuffers löschen
KEY_DEL_EOS Bis zum Ende des Bildschirmpuffers löschen
KEY_INS_LINE Puffer für neue Zeile einfügen
KEY_BRL_DOT1 bis _DOT8 Tasteneingaben auf der Braillezeile
KEY_VOICECOMMAND Startet die Sprachassistenten-App
KEY_SELECTIVE_SCREEN Löst das regionale Snipping Tool aus
KEY_BATTERY Fragt Benachrichtigungen zum Akkustand ab
KEY_STAR/KEY_SHARP Symbole auf dem Tastenfeld des Telefons
KEY_PLUS Pluszeichen auf dem Tastenfeld des Telefons
KEY_INFO Infofeld-Overlay anzeigen
KEY_TIME Aktuelle Uhrzeit anzeigen
KEY_VENDOR Spezifikationen des Anbieters für Abfragen
KEY_ARCHIVE Öffnet das lokale Archivierungsprogramm
KEY_PROGRAM Konfiguriert Programmparameter
KEY_POWER2 Löst die alternative Notstromversorgung aus

EV_ABS – Absolute Bewegungsereignisse

Der Ereignistyp EV_ABS ist entscheidend für die Simulation präziser Berührungen, Drag-and-Drop-Gesten, Multi-Touch-Zoom-Aktionen und Joystick-Anpassungen. 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 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 Berührungsbereichs
ABS_MT_TOUCH_MINOR Pixel Breite der Nebenachse des Berührungsbereichs
ABS_MT_WIDTH_MAJOR Pixel Breite der Hauptachse des Werkzeugs
ABS_MT_WIDTH_MINOR Pixel Breite der Nebenachse des Werkzeugs
ABS_MT_ORIENTATION 0 bis 255 Kontaktwinkel
ABS_MT_PRESSURE 0 bis 255 Größe der Kontaktkraft
ABS_MT_DISTANCE mm Abstand zum Display beim Bewegen des Stifts über dem Display
ABS_MT_TOOL_TYPE 0 bis 2 0=Finger, 1=Kugelschreiber, 2=Bleistift
ABS_MT_BLOB_ID Ganzzahl Kontakt-Blob-ID
ABS_MT_TOOL_X Pixel X-Koordinate des Tools
ABS_MT_TOOL_Y Pixel Y-Koordinate der Werkzeugposition
ABS_MT_SLOT 0 bis N Aktiver Slot (Protokoll B)
ABS_X/_Y/_Z analogue Joystick-Koordinatenachsen
ABS_RX/_RY/_RZ analogue Joystick-Rotationsachsen
ABS_THROTTLE/_BRAKE analogue Pedale und Lenkung
ABS_HAT0X/_HAT0Y -1/0/1 Steuerkreuz und POV-Schalter
ABS_PRESSURE 0 bis 255 Stylus-/Zeiger-Druckstufe
ABS_DISTANCE mm Hover-Abstand (Eingabestift)
ABS_TILT_X/_TILT_Y Grad Neigungswinkel des Eingabestifts
ABS_VOLUME analogue Lautstärke des Controllers

Die Touch-Interaktion unter Android wird durch Multi-Touch-Protokolle (MT) gesteuert. Moderne Emulatoren implementieren sowohl Protokoll A (zustandslos, sendet Kontaktpakete, die durch Synchronisierungsmarkierungen getrennt sind) als auch Protokoll B (zustandsorientiert, weist Kontakte dedizierten Tracking-Slots zu). Protokoll B ermöglicht die effiziente Erfassung mehrerer gleichzeitiger Berührungen für Gesten wie das Auf- und Zuziehen.

EV_REL und EV_SW – Bewegungs- und Hardwareschalter

Die Ereigniskategorie EV_REL verwaltet relative Zeiger- oder Koordinatenänderungen, die hauptsächlich zum Emulieren externer Mausbewegungen oder Scrollräder verwendet werden. Die Ereigniskategorie EV_SW verwaltet physische Geräteschalter, z. B. ob ein Flip-Phone 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 Laptopdeckels (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=nicht angeschlossen, 1=angeschlossen)
SW_MICROPHONE_INSERT 0/1 Status der Mikrofonbuchse (0=Aus, 1=Ein)
Syntax für die Befehlsverteilung

Wenn Sie diese Codes senden möchten, formatieren Sie den Konsolenbefehl mit Typen, Codes und Werten, die durch Doppelpunkte getrennt sind. Sie können mehrere Koordinatenänderungen in einem einzigen String in die Warteschlange stellen. Wichtig: Hängen Sie immer eine abschließende Synchronisierungsmarkierung (EV_SYN:0:0) an, um anzugeben, dass das Emulator-Framework diese Eingaben bündeln und zusammen verarbeiten soll.

Beispiele für Ereignisskripts und Gesten

Da Telnet das Senden mehrteiliger Parameter ermöglicht, kannst du realistische physische Gestenfolgen simulieren. Unten finden Sie die Strukturen von Rohereignisskripts, mit denen Sie Gesten über die Hostkonsole automatisieren können.

Tippen auf den Bildschirm simulieren

Wenn Sie ein sauberes Tippen auf den Bildschirm an einer Zielkoordinate ausführen möchten, 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

Wenn Sie eine Wischgeste zum Scrollen ausführen möchten, halten Sie den Kontakt an der Startkoordinate gedrückt, senden Sie Zwischenkoordinatenframes für die Bewegung und lassen Sie 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 zusammenziehen“ simulieren

Wenn du einen Zweifingerzoom auslösen möchtest, verwende 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

Simuliert das Einstecken oder Entfernen von Kopfhöreranschlüssen, um die Audio-Routing-Schalter zu testen. Der Wert 1 steht für das Einstecken des Kopfhörers und 0 für das Entfernen.

# 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 von einem echten Gerät abrufen

Wenn Sie die genaue Ereignissyntaxsequenz für eine benutzerdefinierte Aktion oder Tastengeste ermitteln möchten, stellen Sie eine Verbindung über adb shell her und führen Sie das Diagnosetool getevent aus. Wenn Sie mit der Emulator-GUI interagieren, gibt die Konsole die genauen Ereigniscodes, ‑typen und ‑positionen aus.

# 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
  • event text message: Sendet eine Zeichenfolge, die Tastendrücke simuliert. Die Nachricht muss ein UTF-8-String sein. Unicode-Beiträge werden entsprechend der aktuellen Gerätetastatur umgekehrt 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 Status der Netzstromversorgung auf „Ein“ oder „Aus“ 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ätsstatus als Prozentsatz von 0 bis 100 fest.

Status der Netzwerkverbindung (nur Ethernet und Mobilfunk)

  • Netzwerkstatus: Prüft den Netzwerkstatus und die aktuellen Verzögerungs- und Geschwindigkeitsmerkmale.

  • network delay latency Ändert die emulierte Netzwerklatenz.

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

    Das Format der Netzwerklatenz ist eines der folgenden (Zahlen sind Millisekunden):

    Format für die Netzwerklatenz:

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

  • edge: EDGE/EGPRS mit einem Latenzbereich von mindestens 80 und maximal 400.

  • umts: UMTS/3G mit einem Latenzbereich von mindestens 35 und maximal 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 Übertragungsbereich festlegen oder die Console verwenden, um die Rate zu ändern, während die App im Emulator ausgeführt wird.

    Das Format der Netzwerkgeschwindigkeit ist eines der folgenden (Zahlen sind Kilobit pro Sekunde):

    Format der Netzwerkgeschwindigkeit:

  • gsm: GSM/CSD mit einer Geschwindigkeit von 14, 4 Mbit/s im Up- und Downstream.

  • hscsd: HSCSD mit einer Geschwindigkeit von 14,4 Mbit/s im Upload und 43,2 Mbit/s im Download.

  • gprs: GPRS mit einer Geschwindigkeit von 40,0 Up und 80,0 Down.

  • edge: EDGE/EGPRS mit einer Geschwindigkeit von 118,4 Kbit/s (Upload) und 236,8 Kbit/s (Download).

  • umts: UMTS/3G mit einer Geschwindigkeit von 128, 0 Kbit/s Upload und 1.920 Kbit/s Download.

  • hsdpa: HSDPA mit einer Geschwindigkeit von 348, 0 Mbit/s (Upload) und 14.400,0 Mbit/s (Download).

  • lte: LTE mit einer Geschwindigkeit von 58.000 Kbit/s (Upload) und 173.000 Kbit/s (Download).

  • evdo: EVDO mit einer Geschwindigkeit von 75.000 Up und 280.000 Down.

  • full: Unbegrenzte Geschwindigkeit, hängt aber von der Verbindungsgeschwindigkeit Ihres Computers ab.

  • num: Legt eine genaue Rate in Kilobit pro Sekunde fest, die sowohl für den Upload als auch für den Download verwendet wird.

  • up:down: Legt die genauen Raten in Kilobit pro Sekunde für Upload und Download separat fest.

    Wenn Sie die Netzwerkgeschwindigkeit beim Start des Emulators festlegen möchten, verwenden Sie die Emulatoroption -netspeed. 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 Sendet Pakete an eine Datei. In der folgenden Liste werden die Parameter und Parameterwerte beschrieben:

    Hinweis: Ab Android Emulator 36.5 wird der WLAN-Verbindungstraffic standardmäßig von netsim verarbeitet. Mit dem Konsolenbefehl für die Netzwerkerfassung wird nur der Legacy-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 zur erweiterten Emulatornetzwerkverwaltung unter Netzwerkverkehr erfassen.

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

  • stop file: Beendet das Senden von Paketen an die angegebene Datei.

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 Roamingliste an. Das Android-System verarbeitet simulierte Anrufe genau wie tatsächliche Anrufe. Der Emulator unterstützt keine Anrufaudio.

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

    • call: Simuliert einen eingehenden Anruf von der Telefonnummer.
    • accept: Nimmt einen eingehenden Anruf von einer Telefonnummer an und ändert den Anrufstatus in „Aktiv“. Sie können den Status eines Anrufs nur dann in „Aktiv“ ändern, wenn der aktuelle Status „Wartend“ oder „Gehalten“ ist.
    • cancel: Beendet einen eingehenden Anruf von oder einen ausgehenden Anruf an phonenumber.
    • busy: Beendet einen ausgehenden Anruf an die Telefonnummer und ändert den Anrufstatus in „Besetzt“. Sie können den Status eines Anrufs nur dann in „Besetzt“ ändern, wenn der aktuelle Status „Wartend“ ist.
  • gsm {data| voice} state Der Befehl für den Datenstatus ändert den Status der GPRS-Datenverbindung und der Befehl für den Sprachstatus ändert den Status der GPRS-Sprachverbindung:

    • unregistered: Kein Netzwerk verfügbar.
    • home: Im lokalen Netzwerk, kein Roaming.
    • roaming: Im Roaming-Netzwerk.
    • searching: Es wird nach Netzwerken gesucht.
    • denied: Nur Notrufe.
    • off: Wie „unregistered“.
    • on: Wie „home“.
  • gsm hold: Ändert den Status eines Anrufs in „Warten“. Sie können den Status eines Anrufs nur dann in „Wartend“ ändern, wenn der aktuelle Status „Aktiv“ oder „Wartend“ ist.

  • gsm list: Listet alle ein- und ausgehenden Anrufe und ihren Status auf.

  • gsm status: Gibt den aktuellen GSM-Sprach- und Datenstatus an. Die Werte entsprechen den für die Sprach- und Datenbefehle beschriebenen Werten.

  • gsm signal {rssi| ber} Ändert die gemeldete Signalstärke (rssi) und die Bitfehlerrate (ber) für die 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 und 99 für unbekannt.
    • ber: Der Bereich liegt zwischen 0 und 7 und 99 für unbekannt.
  • gsm signal-profile num: Legt das Signalstärkeprofil fest. „num“ ist eine Zahl von 0 bis 4.

  • cdma ssource source Legt die aktuelle CDMA-Aboquelle fest, wobei die Quelle eine netzwerkbasierte Zulassungsliste ist, 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 auf die Sensoren, die im AVD verfügbar sind. Neben dem Sensorbefehl können Sie die Einstellungen im Emulator auf dem Bildschirm „Virtuelle Sensoren“ auf den Tabs „Beschleunigungsmesser“ und „Zusätzliche Sensoren“ einsehen 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 der 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 x-, y- und z-Werte gesetzt, die durch Doppelpunkte getrennt sind.

    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 „hi there“ 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 im Emulator weitergibt, die SMS verarbeitet, z. B. die Messages App. Wenn Sie 10 Ziffern übergeben, formatiert die App sie als Telefonnummer. 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 des Fingers.

Eine Anleitung zur Verwendung dieser Befehle finden Sie im folgenden Abschnitt zur Fingerabdrucksimulation und -validierung.

Bildschirmaufnahme

Mit dem Befehl zur Bildschirmaufzeichnung können Sie hochwertige Videodateien des physischen Displays des Emulators direkt vom Hostsystem aus aufnehmen. Das ist sehr nützlich für Continuous Integration-Pipelines und automatisierte Fehlerberichte.

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

Automatisierung und Makro

Mit dem Automatisierungssubsystem können Entwickler Makrostatusübergänge auf dem laufenden virtuellen Gerät aufzeichnen und wiedergeben, um automatisierte Testabläufe auszuführen.

  • automation {record| stop-record| play| stop-play} Verwaltet automatisierte Makroaufzeichnungen.
    • record: Startet die Aufzeichnung von Änderungen des Gerätestatus und von Eingaben.
    • stop-record: Beendet die aktuelle Makroaufzeichnungssitzung.
    • play: Startet die Wiedergabe einer aufgezeichneten Makrosequenz.
    • stop-play: Hält die aktive Makrowiedergabesequenz an.

Physik (6DoF)

Mit den Physikbefehlen wird das Logging von Ground-Truth-Raumpositionen für physikalische Bewegungsmodelle mit sechs Freiheitsgraden (6DoF) verwaltet, die zur Simulation von erweitertem Motion Tracking verwendet werden.

  • physics {record-gt| stop} Verwaltet Aufnahmen des physischen Pose-Modells.
    • record-gt: Startet die Aufzeichnung von 6DoF-Bewegungsdaten für die Grundwahrheit.
    • stop: Hält den aktuellen Aufzeichnungsprozess für die Grundwahrheit an.

Erweiterte Gerätesteuerung

In diesem Abschnitt werden hochspezialisierte Konsolenbefehl-Endpunkte für erweiterte Emulationskonfigurationen zusammengefasst, darunter Netzwerk-Proxys, 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 bei faltbaren Profilen wie dem Pixel Fold oder dem Emulator mit anpassbarer Größe nicht unterstützt.

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

    • set host port: Konfiguriert die Einstellungen des Zielproxys.
    • clear: Setzt die Proxy-Konfigurationen 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, die im Kamerafeed der virtuellen Szene angezeigt werden, mit einer benutzerdefinierten Bilddatei an.

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

  • nodraw {on| off} Deaktiviert das physische GUI-Rendering auf dem Hostbildschirm, um den Systemspeicher und die GPU-Last bei umfangreichen Hintergrundautomatisierungsläufen ohne GUI 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 automatisierte System-Snapshots, wenn beim angegebenen Anwendungsprozess eine nicht behandelte 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 eine leistungsstarke gRPC-Programmierschnittstelle. Die Telnet-Konsole eignet sich hervorragend für schnelle interaktive Sitzungen oder einfaches Scripting. Die gRPC-Schnittstelle ist dagegen für eine leistungsstarke, sichere und robuste automatisierte Steuerung in Continuous Integration- (CI) und Headless-Umgebungen konzipiert. Durch das Angebot direkter Dienstendpunkte entfällt bei gRPC die Notwendigkeit, Textstreams zu parsen, Terminal-Sitzungs-Handshakes zu verwalten oder unverschlüsselte Localhost-Ports freizugeben.

Um Ihnen die Entscheidung zwischen der alten Telnet-Konsole und der modernen programmatischen gRPC-Schnittstelle zu erleichtern, finden Sie im Folgenden einen Vergleich der Leistung, Sicherheit und Funktionen:

Funktion Telnet-Konsole gRPC-Schnittstelle
Am besten geeignet für Manuelles Debugging, interaktive Sitzungen. Monitorlose CI/CD, umfangreiche automatisierte Testumgebungen.
Geschwindigkeit Langsamer; Text-Overhead, Verbindungslatenz. Optimiert; gemultiplextes HTTP/2, schnelles Proto.
Sicherheit Unverschlüsselt; lokale Ports (5554–5585). Kann mit TLS gesichert werden, funktioniert über Netzwerke.
Streams Nicht unterstützt; nur Anfrage-Antwort. Streams für Logcat, Audioaufnahme für Gäste.
Medien Schreibt Ausgabedateien auf das Host-/Gastlaufwerk. Direkte binäre Puffer über die Leitung.
Gastbetriebssystem Auf feste Emulatorbefehle beschränkt. Führt native Bash-Shell-Befehle für Gäste aus.

gRPC starten und aufrufen

Wenn Sie die gRPC-Endpunkte verwenden möchten, starten Sie den Android-Emulator über die Befehlszeile und fügen Sie das Flag -grpc hinzu, um den Ziel-Loopback-Port anzugeben.

# 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 Dienstprogramm grpcurl, um mit den Diensten des Emulators zu kommunizieren. Alle Anfragen sind im JSON-Format formatiert und werden im 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

Zuordnung von Telnet-Konsole zu gRPC-Dienst

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 Legacy-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
Status posture EmulatorController/setPosture
Status 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 herkömmliche Telnet-Konsolenverbindungen physisch nicht ausgeführt werden können. Dazu gehören direktes Logcat-Streaming, bidirektionale Audioaufnahme oder -einschleusung, Änderungen an der Host-GUI und direkter Shell-Zugriff.

gRPC-Dienst/-Methode Parameter Funktion
streamLogcat {"maxLines": 100} Streamt Logcat-Ausgaben des Gastsystems
streamAudio {} Streamt Audio vom Lautsprecher über das Kabel
injectAudio {"audio": "..."} Fügt Mikrofon-Audiostreams ein
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.

Verwende den Befehl „finger“, um die Fingerabdruckauthentifizierung für deine App zu simulieren und zu validieren. Du benötigst 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 zur Registrierung.

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

  3. Während auf dem Bildschirm Ihrer App die Fingerabdruckauthentifizierung angezeigt wird, rufen Sie die Konsole auf und 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.