Wysyłaj polecenia konsoli emulatora

Każde uruchomione urządzenie wirtualne udostępnia konsolę, która umożliwia wysyłanie zapytań i sterowanie emulowanym środowiskiem urządzenia. Możesz na przykład używać konsoli do zarządzania przekierowaniem portów, charakterystyką sieci i zdarzeniami telefonicznymi, gdy aplikacja jest uruchomiona na emulatorze.

Poniższe polecenia wymagają uruchomionego emulatora. Więcej informacji o uruchamianiu emulatora znajdziesz w artykułach Uruchamianie aplikacji w emulatorze AndroidaUruchamianie emulatora z wiersza poleceń.

Rozpoczynanie i zatrzymywanie sesji konsoli

Aby uzyskać dostęp do konsoli i wpisywać polecenia w oknie terminala, użyj protokołu telnet, aby połączyć się z portem konsoli, i podaj token uwierzytelniania. Za każdym razem, gdy konsola wyświetli OK, będzie gotowa do przyjęcia poleceń. Nie ma typowego promptu.

Aby połączyć się z konsolą działającego urządzenia wirtualnego:

  1. Otwórz okno terminala i wpisz to polecenie:

    telnet localhost console-port
    

    Tytuł okna emulatora zawiera numer portu konsoli, gdy emulator jest uruchomiony w osobnym oknie, ale nie wtedy, gdy jest uruchomiony w oknie narzędzi. Na przykład tytuł okna emulatora korzystającego z portu konsoli 5554 może wyglądać tak: Pixel8_API_34:5554. Polecenie adb devices wyświetla listę uruchomionych urządzeń wirtualnych i numery portów konsoli. Więcej informacji znajdziesz w artykule Wysyłanie zapytań o urządzenia.

    Uwaga: emulator nasłuchuje połączeń na portach 5554–5585 i akceptuje połączenia tylko z hosta lokalnego.

  2. Gdy konsola wyświetli OK, wpisz polecenie auth auth_token.

    Zanim będzie można wpisać polecenia konsoli, konsola emulatora wymaga uwierzytelnienia. auth_token musi być zgodny z zawartością pliku .emulator_console_auth_token w katalogu domowym.

    Jeśli ten plik nie istnieje, polecenie telnet localhost console-port utworzy plik zawierający losowo wygenerowany token uwierzytelniania. Aby wyłączyć uwierzytelnianie, usuń token z pliku .emulator_console_auth_token lub utwórz pusty plik, jeśli nie istnieje.

  3. Po połączeniu z konsolą wpisz polecenia konsoli.

    Wpisz help, help command lub help-verbose, aby wyświetlić listę poleceń konsoli i dowiedzieć się więcej o poszczególnych poleceniach.

  4. Aby zakończyć sesję konsoli, wpisz quit lub exit.

Oto przykładowa sesja:

$ 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.

Polecenia typu „wystrzel i zapomnij”

Jeśli nie musisz mieć otwartej sesji, użyj skrótu adb emu, który wykonuje polecenie i natychmiast przywraca kontrolę do powłoki wywołującej:

adb emu command commandParameter

Wywołanie za pomocą adb emu łączy się z dostępnym emulatorem. Jeśli masz kilka emulatorów działających w tym samym czasie, musisz przekazać numer seryjny konkretnego emulatora, na którym chcesz przeprowadzić test:

adb -s emulator-serial emu command commandParameter

Dokumentacja poleceń emulatora

Poniżej znajdziesz listę poleceń konsoli emulatora wraz z parametrami i wartościami:

Polecenia ogólne

  • avd {stop| start| status| name} Wysyła zapytania do urządzenia wirtualnego, steruje nim i zarządza nim w ten sposób:

    • stop: zatrzymuje wykonywanie na urządzeniu.
    • start: rozpoczyna wykonywanie urządzenia.
    • status: wysyła zapytanie o stan urządzenia wirtualnego, który może być uruchomiony lub zatrzymany.
    • name: wysyła zapytanie o nazwę urządzenia wirtualnego.
  • avd snapshot {list| save name| load name| delete name} Zapisuje i przywraca stan urządzenia w zrzutach w następujący sposób:

    • list: wyświetla listę wszystkich zapisanych zrzutów.
    • save name: zapisuje zrzut pod nazwą.
    • load name: wczytuje zrzut o podanej nazwie.
    • delete name: usuwa zrzut o podanej nazwie.

    Poniższy przykład zapisuje podsumowanie danych pod nazwą firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: składa urządzenie, aby wyświetlić mniejszą konfigurację ekranu, jeśli urządzenie jest składane i obecnie rozłożone.

  • rozłóż: rozkłada urządzenie, aby wyświetlić większy ekran, jeśli urządzenie jest składane i jest obecnie złożone.

  • kill: zamyka urządzenie wirtualne.

  • ping: sprawdza, czy urządzenie wirtualne jest uruchomione.

  • rotate: obraca AVD w lewo co 45 stopni.

Awaria emulatora

  • crash: powoduje awarię emulatora podczas wykonywania aplikacji.

  • crash-on-exit: powoduje awarię emulatora po zamknięciu aplikacji.

Debugowanie tagów

  • debug tags ...: włącza i wyłącza komunikaty debugowania z określonych części emulatora. Parametr tags musi mieć wartość z listy tagów debugowania, która pojawia się po wykonaniu polecenia emulator -help-debug-tags. Więcej informacji o opcji -help-debug-tags znajdziesz w tabeli najczęściej używanych opcji. Poniższy przykład włącza tag radia:

    debug radio
    

Przekierowanie portu

  • redir list: wyświetla bieżące przekierowanie portu.

  • redir add protocol:host-port:guest-port Dodaje nowe przekierowanie portu w ten sposób:

    • protocol: musi to być tcp lub udp.
    • host-port: numer portu do otwarcia na hoście.
    • guest-port: numer portu, do którego mają być kierowane dane na emulatorze.
  • redir del protocol:host-port Usuwa przekierowanie portu.

    • protocol: musi być to tcp lub udp.
    • host-port: numer portu do otwarcia na hoście.

Położenie geograficzne

Ustawia położenie geograficzne zgłaszane do aplikacji działających w emulatorze, wysyłając do niego poprawkę GPS.

Gdy tylko urządzenie wirtualne zacznie działać, możesz wydać jedno z tych poleceń geograficznych. Emulator ustawia wpisaną lokalizację, tworząc pozornego dostawcę lokalizacji. Ten dostawca odpowiada na odbiorniki lokalizacji ustawione przez aplikacje i przekazuje lokalizację do LocationManager. Każda aplikacja może wysyłać zapytania do menedżera lokalizacji, aby uzyskać bieżącą lokalizację GPS emulowanego urządzenia, wywołując funkcję LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: wysyła do emulatora prostą poprawkę GPS. Określ długość i szerokość geograficzną w stopniach dziesiętnych. Użyj liczby od 1 do 12, aby określić liczbę satelitów, które mają być używane do określania pozycji, oraz podaj wysokość w metrach i prędkość w węzłach.

  • geo nmea sentence: wysyła zdanie NMEA 0183 do emulowanego urządzenia tak, jakby zostało wysłane z emulowanego modemu GPS. Zacznij zdanie od „$GP”. Obecnie obsługiwane są tylko zdania „$GPGGA” i „$GPRCM”. Poniższy przykład to zdanie GPGGA (Global Positioning System Fix Data), które pobiera dane o czasie, pozycji i ustaleniu pozycji odbiornika GPS:

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

Fałszywe zdarzenia sprzętowe

Podsystem zdarzeń sprzętowych w konsoli emulatora umożliwia symulowanie niemal każdej fizycznej interakcji z urządzeniem. Obejmuje to przyciski fizyczne, dotyk/gesty na ekranie, pokrętła, joysticki i przełączniki sprzętowe.

  • typy zdarzeń: zawiera listę wszystkich typów fałszywych zdarzeń. W przypadku wydarzeń, które mają kody, liczba kodów jest podana w nawiasach po prawej stronie. Przykładowe dane wyjściowe:

    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 ...]: wysyła co najmniej 1 rodzaj fałszywych zdarzeń.

  • event codes type (typ kodów zdarzeń): zawiera listę kodów zdarzeń dla określonego typu fałszywego zdarzenia.

  • event send type[:code]:[value] [...]: wysyła co najmniej 1 fałszywe zdarzenie z opcjonalnymi kodami i wartościami kodów.

EV_KEY – odwołania do kodów kluczy

Typ zdarzenia EV_KEY służy do symulowania naciśnięć i puszczeń przycisków. W tabelach poniżej podzieliliśmy długą listę obsługiwanych kodów kluczy na logiczne kategorie. W przypadku każdego kodu klucza wysłanie wartości 1 symuluje naciśnięcie, a wartości 0 – zwolnienie. Wartość 2 oznacza powtórzenie klucza.

Podtabela A: klucze systemowe Androida
Kod Opis
KEY_HOME Przycisk ekranu głównego
KEY_BACK Aktywator przycisku Wstecz
KEY_MENU Przycisk menu (rozwijania)
KEY_POWER Przycisk zasilania (naciśnięcie/przytrzymanie)
KEY_VOLUMEUP Reguła oparta na przycisku zwiększania głośności
KEY_VOLUMEDOWN Reguła oparta na przycisku Zmniejsz głośność
KEY_CAMERA Fizyczny przycisk migawki aparatu
KEY_FOCUS Migawka autofokusa aparatu
KEY_SEARCH Reguła przycisku wyszukiwania
KEY_SLEEP Aktywator polecenia uśpienia
KEY_WAKEUP Wyzwalacz polecenia wybudzania
KEY_NOTIFICATION Otwórz panel powiadomień
KEY_MUTE Wyciszanie wyjścia audio systemu
KEY_MICMUTE Wyciszanie dźwięku z mikrofonu
KEY_BRIGHTNESSDOWN Zmniejsz jasność wyświetlacza
KEY_BRIGHTNESSUP Zwiększanie jasności wyświetlacza
KEY_PHONE Otwieranie domyślnej aplikacji telefonicznej
KEY_SEND Wysyłanie SMS-ów lub nawiązywanie połączeń telefonicznych
KEY_HEADSETHOOK Zaczep zestawu słuchawkowego (odbieranie/rozłączanie)
KEY_SCREEN Polecenie aktywacji wygaszacza ekranu
KEY_CONFIG Menu konfiguracji systemu
KEY_SWITCHVIDEOMODE Przełączanie trybu wideo systemu
KEY_KBDILLUMTOGGLE Przełączanie podświetlenia klawiatury
Podtabela B. Multimedia i elementy sterujące odtwarzaniem
Kod Opis
KEY_PLAYPAUSE Przełączanie stanu odtwarzania i wstrzymywania
KEY_PLAY rozpocząć odtwarzanie multimediów,
KEY_PAUSECD Wstrzymywanie odtwarzania płyty CD
KEY_STOPCD Zatrzymywanie odtwarzania płyty CD
KEY_NEXTSONG Przejdź do następnego utworu
KEY_PREVIOUSSONG Przejdź do poprzedniego utworu
KEY_REWIND Przewijanie aktywnej ścieżki do tyłu
KEY_FASTFORWARD Szybkie przewijanie aktywnej ścieżki do przodu
KEY_RECORD Polecenie wyzwalające nagrywanie
KEY_SHUFFLE Włączanie i wyłączanie odtwarzania losowego
KEY_REPEAT Włączanie i wyłączanie powtarzania odtwarzania
KEY_MEDIA Aktywator klawisza multimedialnego
Podtabela C: klawiatury nawigacyjne i ogólne
Kod Opis
KEY_UP Kierunek przycisku w górę na padzie kierunkowym
KEY_DOWN Kierunek w dół na padzie kierunkowym
KEY_LEFT Kierunek w lewo na padzie kierunkowym
KEY_RIGHT Kierunek w prawo na padzie kierunkowym
KEY_PAGEUP Nawigacja w górę strony
KEY_PAGEDOWN Nawigacja w dół strony
KEY_INSERT Wstawianie wyzwalacza klawisza
KEY_DELETE Usuwanie aktywatora klawisza
KEY_ENTER Wywołanie klawiszem Enter
KEY_ESC Aktywator klawisza Escape
KEY_TAB Wywoływanie za pomocą klawisza Tab
KEY_SPACE Wywoływanie za pomocą spacji
KEY_BACKSPACE Aktywator klawisza Backspace
KEY_CLEAR Wyczyść bufor wejściowy
KEY_CANCEL Anulowanie aktywnego działania
KEY_OK Potwierdź/OK
KEY_SELECT Aktywator wyboru elementu
KEY_GOTO Przejdź do wyznaczonego miejsca
KEY_HELP Dostęp do kontekstu pomocy
Podtabela D: znaki alfanumeryczne i symbole klawiatury numerycznej
  • Litery alfabetu standardowego: KEY_AKEY_Z (26 kodów).
  • Klawisze klawiatury numerycznej: KEY_1KEY_0 (10 kodów).
Kod Symbol znaku
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (Klawiatura numeryczna)
KEY_KPPLUS + (Klawiatura numeryczna)
KEY_KPMINUS - (Klawiatura numeryczna)
KEY_KPDOT . (Klawiatura numeryczna)
KEY_KPSLASH / (Klawiatura numeryczna)
KEY_KPENTER Enter (klawiatura numeryczna)
KEY_KPEQUAL = (Klawiatura numeryczna)
KEY_KPCOMMA , (Klawiatura numeryczna)
KEY_KPJPCOMMA , (układ japoński)
KEY_KPLEFTPAREN ( (Klawiatura numeryczna)
KEY_KPRIGHTPAREN ) (Klawiatura numeryczna)
KEY_KPPLUSMINUS ± (Klawiatura numeryczna)
Podtabela E: klawisze modyfikujące i funkcyjne
  • Standardowe klawisze funkcyjne: KEY_F1KEY_F24 (24 kody).
Kod Opis
KEY_LEFTSHIFT Modyfikator klawiatury Lewy Shift
KEY_RIGHTSHIFT Modyfikator klawiatury Shift po prawej stronie
KEY_LEFTCTRL Modyfikator klawiatury Lewy Control
KEY_RIGHTCTRL Klawisz modyfikujący prawy Ctrl
KEY_LEFTALT Klawisz modyfikatora Lewy Alt
KEY_RIGHTALT Klawisz modyfikatora Alt po prawej stronie
KEY_LEFTMETA Lewy klawisz Meta/Command
KEY_RIGHTMETA Prawy klawisz Meta/Command
KEY_CAPSLOCK Przełącznik klawiatury Caps Lock
KEY_NUMLOCK Przełącznik klawiatury Num Lock
KEY_SCROLLLOCK Przełącznik klawiatury Scroll Lock
KEY_COMPOSE Kompozytor znaków
KEY_FN Klawisz FN na klawiaturze fizycznej
KEY_FN_ESC Kombinacje klawiszy funkcyjnych
KEY_FN_1 Skrót do funkcji specjalnej 1
KEY_FN_2 Skrót do funkcji specjalnej 2
KEY_FN_D Skrót funkcji specjalnej D
KEY_FN_E Skrót do funkcji specjalnej E
KEY_FN_F Skrót funkcji specjalnej F
KEY_FN_S Skrót funkcji specjalnej S
KEY_FN_B Skrót funkcji specjalnej B
Podtabela F. Pady do gier i joysticki
Kod Opis
BTN_A / BTN_B / BTN_C Przyciski A/B/C na kontrolerze
BTN_X / BTN_Y / BTN_Z Przyciski na górze kontrolera X/Y/Z
BTN_START Przycisk menu Start na padzie do gier
BTN_SELECT Przycisk wyboru na padzie do gier
BTN_MODE Przełącznik trybu kontrolera
BTN_TL/BTN_TR Lewy / prawy bumper
BTN_TL2/BTN_TR2 Lewy / prawy spust analogowy
BTN_THUMBL/BTN_THUMBR Kliknięcia lewą lub prawą gałką
BTN_DPAD_UP Aktywator Pad kierunkowy – w górę
BTN_DPAD_DOWN Aktywator Pad kierunkowy w dół
BTN_DPAD_LEFT Lewy spust na padzie kierunkowym do gier
BTN_DPAD_RIGHT Prawy spust na padzie kierunkowym
BTN_THUMB Główny przycisk dżojstika
BTN_TOP/BTN_TOP2 Przyciski górne joysticka
BTN_PINKIE Przyciski dżojstika obsługiwane małym palcem
Od BTN_BASE do _BASE6 Przyciski podstawy platformy joysticka
BTN_DEAD Flaga strefy martwej nieaktywnego gamepada
BTN_TRIGGER Fizyczny joystick z uchwytem
BTN_JOYSTICK Ogólny kod wejściowy joysticka
Podtabela G. Wprowadzanie za pomocą myszy, dotyku i rysika
Kod Opis
BTN_MOUSE Ogólne zdarzenie wskaźnika myszy
BTN_LEFT Kliknięcie lewym przyciskiem myszy
BTN_RIGHT Kliknięcie prawym przyciskiem myszy
BTN_MIDDLE Kliknięcie środkowym przyciskiem kółka przewijania
BTN_SIDE Reguła przycisku bocznego nawigacji
BTN_EXTRA Dodatkowy przycisk myszy
BTN_FORWARD Kliknięcie przycisku nawigacji do przodu w przeglądarce
BTN_BACK Kliknięcie przycisku nawigacji wstecz w przeglądarce
BTN_TASK Klawisz przełączania zadań systemowych
BTN_TOUCH Wykryto fizyczny kontakt z ekranem
BTN_STYLUS Bliskość aktywnego rysika
BTN_STYLUS2 Dodatkowy przycisk na rysiku
BTN_TOOL_PEN Identyfikator narzędzia rysika
BTN_TOOL_RUBBER Identyfikator narzędzia gumki rysika
BTN_TOOL_BRUSH Identyfikator narzędzia Pędzel malarski
BTN_TOOL_PENCIL Identyfikator narzędzia ołówek techniczny
BTN_TOOL_AIRBRUSH Identyfikator narzędzia do malowania aerografem
BTN_TOOL_FINGER Dotykanie ekranu palcem
BTN_TOOL_MOUSE Zewnętrzny identyfikator narzędzia myszy
BTN_TOOL_LENS Narzędzie soczewki powiększającej
BTN_TOOL_DOUBLETAP Flaga szybkości dwukrotnego dotknięcia gestem
BTN_TOOL_TRIPLETAP Flaga szybkości trzykrotnego kliknięcia gestem
Podtabela H. Skróty do aplikacji
Kod Działanie docelowe
KEY_WWW Uruchamia domyślną przeglądarkę
KEY_MAIL Otwiera domyślnego klienta poczty e-mail
KEY_BOOKMARKS Otwiera listę zakładek przeglądarki
KEY_CALC Otwiera narzędzie Kalkulator
KEY_FILE Otwiera eksplorator plików lokalnych
KEY_EDIT Aktywator edycji dokumentu
KEY_NEW Aktywator utworzenia nowego dokumentu
KEY_OPEN Aktywator otwarcia dokumentu
KEY_SAVE Aktywator zadania zapisywania pliku
KEY_CLOSE Aktywator zadania zamknięcia pliku
KEY_PRINT Aktywator zadania drukowania pliku
KEY_COPY Kopiowanie do schowka
KEY_PASTE Działanie wstawiania z bufora schowka
KEY_CUT Działanie wycinania bufora schowka
KEY_UNDO Cofanie działania w buforze schowka
KEY_REDO Ponowienie działania w buforze schowka
KEY_CANCEL Aktywator procesu anulowania bufora
KEY_FIND Narzędzie do wyszukiwania dokumentów
KEY_REFRESH Narzędzie do odświeżania dokumentów
KEY_EXIT Narzędzie do zamykania dokumentów
KEY_DOCUMENTS Uruchamia portal dokumentów systemowych
KEY_HOMEPAGE Uruchamia przeglądarkę strony głównej
KEY_FAVORITES Otwiera portal ulubionych w przeglądarce
KEY_CHAT Uruchamia komunikator internetowy
KEY_EMAIL Aktywator uruchamiający dodatkowy e-mail
KEY_FINANCE Otwieranie narzędzia do obsługi akcji lub finansów
KEY_SPORT Otwieranie narzędzia do śledzenia sportu
KEY_SHOP Otwórz portal zakupów cyfrowych
KEY_PLAYER Otwórz główny odtwarzacz multimediów
KEY_MP3 Otwórz główny odtwarzacz MP3
KEY_TEXT Otwieranie domyślnego edytora tekstu
KEY_LIST Otwórz narzędzie do tworzenia list kontrolnych
KEY_MEMO Otwórz notatnik / narzędzie do tworzenia notatek
KEY_CALENDAR Otwiera portal kalendarza lub harmonogramu
KEY_DIRECTORY Otwiera systemowy katalog adresów
KEY_COMPUTER Otwiera eksplorator specyfikacji
KEY_TV/KEY_TV2 Uruchomienie portalu telewizyjnego
KEY_RADIO Uruchamia radio
KEY_CD/KEY_DVD Aktywuje czytnik napędu optycznego
KEY_AUDIO/KEY_VIDEO Dostęp do specyfikacji multimediów
KEY_TUNER Konfigurowanie odbiorników/tunerów
KEY_SAT/KEY_SAT2 Konfigurowanie plików danych satelitarnych
KEY_TAPE Odtwarzanie taśm
KEY_VCR Odtwórz kanał odtwarzacza VCR
KEY_VCR2 Odtwórz kanał VCR 2
KEY_AUX Wejścia portów multimediów dodatkowych
KEY_SETUP Menu konfiguracji
Od KEY_PROG1 do _PROG4 Klucze programu zdefiniowane przez użytkownika
KEY_ZOOM Przełącznik powiększenia widocznego obszaru
KEY_MODE Wybór trybu widocznego obszaru
KEY_KEYBOARD Wyświetlanie i ukrywanie klawiatury wirtualnej
KEY_LANGUAGE Przełączanie języka ścieżki audio
KEY_TITLE Otwieranie opcji tytułu multimediów
KEY_SUBTITLE Włączanie i wyłączanie interfejsu napisów
KEY_ANGLE Zmiana kątów kamery wideo
KEY_EPG Otwieranie elektronicznego przewodnika po programach
KEY_PVR Otwórz osobisty rejestrator wideo
KEY_MHP Otwórz platformę multimedialną
KEY_CHANNEL Otwieranie kanałów tunera TV
KEY_CHANNELUP Przełączanie kanału telewizyjnego w górę
KEY_CHANNELDOWN Przełączanie kanału telewizyjnego w dół
KEY_RED Czerwony interaktywny przycisk
KEY_GREEN Zielony przycisk interaktywny
KEY_YELLOW Żółty przycisk interaktywny
KEY_BLUE Niebieski przycisk interaktywny
KEY_FIRST Wybierz opcję pierwszego elementu
KEY_LAST Wybierz opcję ostatniego elementu
KEY_NEXT Wybierz następną opcję ścieżki
KEY_PREVIOUS Wybierz poprzednią opcję ścieżki
KEY_RESTART Uruchom ponownie pętlę ścieżki multimediów
KEY_SLOW Opcja odtwarzania w zwolnionym tempie
KEY_AB Pętla sekwencji powtarzania A–B
KEY_PLAYCD Polecenie odtwarzania CD
KEY_PAUSECD Polecenie wstrzymania odtwarzacza CD
KEY_STOPCD Polecenie zatrzymania odtwarzania płyty CD
KEY_DIGITS Polecenie wpisywania na klawiaturze cyfrowej
KEY_TEEN Opcja wartości nastolatków na klawiaturze
KEY_TWEN Opcja wartości twen na klawiaturze
KEY_DEL_EOL Usuń do końca bufora wiersza
KEY_DEL_EOS Usuń do końca bufora ekranu
KEY_INS_LINE Wstaw bufor nowego wiersza
Od KEY_BRL_DOT1 do _DOT8 Dane wejściowe przycisków monitora brajlowskiego
KEY_VOICECOMMAND Uruchamia aplikację asystenta głosowego
KEY_SELECTIVE_SCREEN Uruchamia wycinanie fragmentu ekranu
KEY_BATTERY Wysyła zapytania o powiadomienia dotyczące baterii
KEY_STAR/KEY_SHARP Symbole na klawiaturze telefonu
KEY_PLUS Klawiatura telefonu ze znakiem plusa
KEY_INFO Pokaż nakładkę panelu informacyjnego
KEY_TIME Wyświetlanie aktualnej godziny
KEY_VENDOR Zapytania dotyczące specyfikacji dostawcy
KEY_ARCHIVE Otwiera lokalne narzędzie do archiwizacji
KEY_PROGRAM Konfigurowanie parametrów programu
KEY_POWER2 Uruchamia alternatywne zasilanie awaryjne

EV_ABS – zdarzenia ruchu bezwzględnego

Typ zdarzenia EV_ABS jest kluczowy w przypadku symulowania precyzyjnych dotknięć, gestów przeciągania i upuszczania, gestów uszczypnięcia wieloma palcami oraz regulacji joysticka. Współrzędne bezwzględne poniżej mapy są bezpośrednio powiązane z rozdzielczością fizyczną ekranu.

Kod Zakres współrzędnych Opis
ABS_MT_TRACKING_ID -1 lub ≥0 Identyfikator śledzenia; -1 kończy dotyk
ABS_MT_POSITION_X Od 0 do 1767 Współrzędna X (Pixel Fold)
ABS_MT_POSITION_Y Od 0 do 2207 Współrzędna Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR pikseli Szerokość głównej osi obszaru dotykowego
ABS_MT_TOUCH_MINOR pikseli Szerokość osi mniejszej obszaru dotykowego
ABS_MT_WIDTH_MAJOR pikseli Szerokość osi głównej narzędzia
ABS_MT_WIDTH_MINOR pikseli Szerokość osi mniejszej narzędzia
ABS_MT_ORIENTATION Od 0 do 255 Kąt orientacji kontaktu
ABS_MT_PRESSURE Od 0 do 255 Wartość siły kontaktu
ABS_MT_DISTANCE mm Odległość od ekranu
ABS_MT_TOOL_TYPE Od 0 do 2 0 – palec, 1 – rysik, 2 – ołówek
ABS_MT_BLOB_ID liczba całkowita Identyfikator obiektu blob kontaktu
ABS_MT_TOOL_X pikseli Współrzędna położenia narzędzia na osi X
ABS_MT_TOOL_Y pikseli Współrzędna położenia narzędzia na osi Y
ABS_MT_SLOT Od 0 do N Aktywne gniazdo (protokół B)
ABS_X / _Y / _Z analogowe Osie współrzędnych joysticka
ABS_RX / _RY / _RZ analogowe Osie obrotu joysticka
ABS_THROTTLE/_BRAKE analogowe Pedały i elementy sterujące
ABS_HAT0X/_HAT0Y -1 / 0 / 1 Pad kierunkowy i przełączniki POV
ABS_PRESSURE Od 0 do 255 Poziom siły nacisku rysika lub wskaźnika
ABS_DISTANCE mm Odległość w zawieszeniu (rysik)
ABS_TILT_X/_TILT_Y stopnie Kąty nachylenia rysika
ABS_VOLUME analogowe Poziomy głośności kontrolera

Interakcja dotykowa na Androidzie jest oparta na protokołach Multi-touch (MT). Nowoczesne emulatory implementują zarówno protokół A (bezstanowy, wysyłający pakiety kontaktów oddzielone znakami synchronizacji), jak i protokół B (stanowy, przypisujący kontakty do dedykowanych miejsc śledzenia). Protokół B umożliwia wydajne śledzenie wielu jednoczesnych dotknięć w przypadku gestów takich jak uszczypnięcie w celu powiększenia.

EV_REL i EV_SW – ruch i przełączniki sprzętowe

Kategoria zdarzeń EV_REL zarządza względnymi zmianami wskaźnika lub współrzędnych, które są używane głównie do emulowania ruchów zewnętrznej myszy lub przewijania kółkiem. Kategoria zdarzeń EV_SW zarządza przełącznikami urządzeń fizycznych, np. informuje, czy telefon z klapką lub tablet jest złożony, czy włożono zewnętrzne urządzenie audio.

Kod Wartości Opis
REL_X Delta Ruch kursora w poziomie
REL_Y Delta Przesuwanie kursora w pionie
SW_LID 0/1 Stan pokrywy laptopa (0=otwarta, 1=zamknięta)
SW_TABLET_MODE 0/1 Stan trybu tabletu (0=wyłączony, 1=aktywny)
SW_HEADPHONE_INSERT 0/1 Stan gniazda słuchawkowego (0=wyjęte, 1=włożone)
SW_MICROPHONE_INSERT 0/1 Stan gniazda mikrofonu (0=wyjście, 1=wejście)
Składnia wysyłania poleceń

Aby wysłać te kody, sformatuj polecenie konsoli, oddzielając typy, kody i wartości dwukropkami. Możesz umieścić w kolejce wiele zmian współrzędnych w jednym ciągu znaków. Co ważne, zawsze dodawaj znak synchronizacji końcowej (EV_SYN:0:0), aby wskazać, że platforma emulatora powinna połączyć i przetworzyć te dane wejściowe razem.

Przykłady skryptów zdarzeń i gestów

Protokół Telnet umożliwia wysyłanie parametrów wieloczęściowych, dzięki czemu możesz symulować realistyczne sekwencje gestów fizycznych. Poniżej znajdziesz struktury skryptów zdarzeń w formie nieprzetworzonej, które umożliwiają automatyzację gestów z konsoli hosta.

Symulowanie kliknięcia ekranu

Aby wykonać czyste dotknięcie ekranu we współrzędnych docelowych, przypisz identyfikator śledzenia, określ współrzędne X i Y na ekranie, zasymuluj dotyk, zsynchronizuj, a następnie zwolnij.

# 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
Symulowanie przewijania pionowego (przesunięcia)

Aby wykonać gest przewijania, przytrzymaj kontakt w początkowych współrzędnych, wyślij pośrednie klatki współrzędnych ruchu i zwolnij kontakt na końcu.

# 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
Symulowanie gestu rozciągania palców

Aby wywołać powiększenie dwoma palcami, użyj aktywnych slotów MT (0 i 1) do śledzenia i koordynowania dwóch współrzędnych dotyku, które oddalają się od siebie.

# 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
Symulowanie przełączenia połączenia słuchawek

Symuluj wkładanie i wyjmowanie wtyczki słuchawek, aby testować przełączniki routingu audio. Wartość 1 oznacza włożenie wtyczki, a 0 – wyjęcie słuchawek.

# 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
Odkrywanie kodów zdarzeń konsoli na prawdziwym urządzeniu

Aby poznać dokładną sekwencję składni zdarzenia dla dowolnego działania niestandardowego lub gestu przycisku, połącz się za pomocą powłoki adb i uruchom narzędzie diagnostyczne getevent. Podczas interakcji z interfejsem graficznym emulatora w konsoli wyświetlane są dokładne kody, typy i pozycje zdarzeń.

# 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
  • Wiadomość tekstowa zdarzenia: wysyła ciąg znaków, które symulują naciśnięcia klawiszy. Wiadomość musi być ciągiem znaków UTF-8. Posty w Unicode są odwrotnie mapowane zgodnie z bieżącą klawiaturą urządzenia, a nieobsługiwane znaki są cicho odrzucane.

Ustawienia stanu zasilania

  • wyświetlacz zasilania: wyświetla stan baterii i ładowarki.

  • power ac {on| off}: włącza lub wyłącza ładowanie z gniazdka.

  • power status {unknown| charging| discharging| not-charging| full}: zmienia stan baterii zgodnie z określonym stanem.

  • power present {true| false}: ustawia stan obecności baterii.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: ustawia stan baterii.

  • power capacity percent: Ustawia pozostałą pojemność baterii w procentach od 0 do 100.

Stan połączenia sieciowego (tylko Ethernet i sieć komórkowa)

  • stan sieci: sprawdza stan sieci oraz aktualne opóźnienie i szybkość.

  • network delay latency Zmienia emulowane opóźnienie sieci.

    Emulator umożliwia symulowanie różnych poziomów opóźnienia sieci, dzięki czemu możesz testować aplikację w środowisku bardziej typowym dla rzeczywistych warunków działania. Możesz ustawić poziom lub zakres opóźnienia podczas uruchamiania emulatora albo użyć konsoli, aby zmienić opóźnienie, gdy aplikacja jest uruchomiona w emulatorze.

    Opóźnienie sieci może mieć jeden z tych formatów (liczby są podane w milisekundach):

    Format opóźnienia sieci:

  • gprs: GPRS, który korzysta z zakresu opóźnień od 150 ms do 550 ms.

  • edge: EDGE/EGPRS, która ma zakres opóźnienia od 80 ms do 400 ms.

  • umts: UMTS/3G, która wykorzystuje zakres opóźnień od 35 ms do 200 ms.

  • none: brak opóźnienia.

  • num: emuluje określone opóźnienie w milisekundach.

  • min:max: emuluje określony zakres czasu oczekiwania.

    Aby ustawić opóźnienie podczas uruchamiania emulatora, użyj opcji emulatora -netdelay z obsługiwaną wartością opóźnienia. Przykłady:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Aby wprowadzić zmiany w opóźnieniu sieci podczas działania emulatora, połącz się z konsolą i użyj polecenia network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed Emulator umożliwia symulowanie różnych szybkości przesyłania danych w sieci. Możesz ustawić szybkość lub zakres przesyłania danych podczas uruchamiania emulatora albo użyć konsoli, aby zmienić szybkość, gdy aplikacja jest uruchomiona w emulatorze.

    Szybkość sieci może być podana w jeden z tych sposobów (liczby są podane w kilobitach na sekundę):

    Format szybkości sieci:

  • gsm: GSM/CSD, która wykorzystuje prędkość 14,4 kb/s w górę i 14,4 kb/s w dół.

  • hscsd: HSCSD, która wykorzystuje prędkość 14,4 kb/s przy wysyłaniu i 43,2 kb/s przy pobieraniu.

  • gprs: GPRS, który wykorzystuje prędkość 40,0 kb/s w przypadku wysyłania i 80,0 kb/s w przypadku pobierania.

  • edge: EDGE/EGPRS, która wykorzystuje prędkość 118,4 kb/s w przypadku wysyłania i 236,8 kb/s w przypadku pobierania.

  • umts: UMTS/3G, która wykorzystuje prędkość 128,0 kb/s przy wysyłaniu i 1920 kb/s przy pobieraniu.

  • hsdpa: HSDPA, która wykorzystuje prędkość 348,0 kb/s w przypadku wysyłania i 14 400,0 kb/s w przypadku pobierania.

  • lte: LTE, która wykorzystuje prędkość 58 000 kb/s w górę i 173 000 kb/s w dół.

  • evdo: EVDO, która wykorzystuje prędkość 75 000 bitów na sekundę w przypadku wysyłania i 280 000 bitów na sekundę w przypadku pobierania.

  • Pełna: nieograniczona szybkość, ale zależy od szybkości połączenia komputera.

  • num: ustawia dokładną szybkość w kilobitach na sekundę, która jest używana zarówno do przesyłania, jak i pobierania.

  • up:down: ustawia dokładne szybkości przesyłania i pobierania w kilobitach na sekundę oddzielnie.

    Aby ustawić szybkość sieci podczas uruchamiania emulatora, użyj opcji -netspeed emulatora. Przykłady:

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

    Aby zmienić szybkość sieci podczas działania emulatora, połącz się z konsolą i użyj polecenia network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Wysyła pakiety do pliku. Poniżej znajdziesz opis parametrów i ich wartości:

    Uwaga: od wersji 36.5 emulatora Androida ruch związany z połączeniem Wi-Fi jest domyślnie obsługiwany przez narzędzie netsim. Polecenie konsoli przechwytywania sieci przechwytuje tylko starszy ruch w sieci komórkowej lub WAN kierowany przez stos QEMU slirp. Aby przechwytywać pakiety Wi-Fi, Bluetooth lub zaawansowanej sieci w nowoczesnych wersjach emulatora, zapoznaj się z sekcją Przechwytywanie ruchu w sieci w przewodniku Zaawansowane sieci emulatora.

  • start file: rozpoczyna przechwytywanie pakietów sieciowych. Ze względów bezpieczeństwa plik musi mieć prostą nazwę (bez separatorów ścieżek, takich jak /, i bez ..). Plik z przechwyconymi pakietami zostanie zapisany w katalogu treści AVD w folderze console_out/ (np. ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: zatrzymuje wysyłanie pakietów do określonego pliku.

Emulacja połączeń telefonicznych

Emulator Androida zawiera własne emulowane modemy GSM i CDMA, które umożliwiają symulowanie funkcji telefonicznych w emulatorze. Na przykład w przypadku GSM możesz symulować połączenia przychodzące oraz nawiązywać i zrywać połączenia transmisji danych. W przypadku CDMA podajesz źródło subskrypcji i preferowaną listę roamingową. System Android obsługuje symulowane połączenia dokładnie tak samo jak rzeczywiste połączenia. Emulator nie obsługuje dźwięku połączeń.

  • gsm {call| accept| cancel| busy} phonenumber Parametry gsm są następujące:

    • call: symuluje połączenie przychodzące z numeru telefonu.
    • accept: odbiera połączenie przychodzące z numeru telefonu i zmienia stan połączenia na aktywny. Stan połączenia możesz zmienić na aktywny tylko wtedy, gdy jego bieżący stan to oczekiwanie lub wstrzymanie.
    • cancel: kończy przychodzące lub wychodzące połączenie telefoniczne z numeru telefonu lub na numer telefonu.
    • busy: zamyka połączenie wychodzące na numer telefonu i zmienia stan połączenia na zajęty. Stan połączenia możesz zmienić na zajęty tylko wtedy, gdy jego bieżący stan to oczekiwanie.
  • gsm {data| voice} state Polecenie stanu danych zmienia stan połączenia do transmisji danych GPRS, a polecenie stanu głosu zmienia stan połączenia głosowego GPRS w ten sposób:

    • unregistered: brak dostępnej sieci.
    • home: w sieci lokalnej, bez roamingu.
    • roaming: w sieci roamingowej.
    • wyszukiwanie: wyszukiwanie sieci;
    • odmowa: tylko połączenia alarmowe.
    • off: to samo co niezarejestrowany.
    • on: tak samo jak w przypadku domu.
  • gsm hold: zmienia stan połączenia na wstrzymane. Stan połączenia możesz zmienić na wstrzymany tylko wtedy, gdy jego bieżący stan to aktywny lub oczekujący.

  • gsm list: wyświetla listę wszystkich połączeń przychodzących i wychodzących oraz ich stanów.

  • gsm status: raportuje bieżący stan głosu/danych GSM. Wartości są takie same jak w przypadku poleceń głosowych i poleceń dotyczących danych.

  • gsm signal {rssi| ber} Zmienia zgłaszaną siłę sygnału (rssi) i wskaźnik błędów bitowych (ber) w ciągu następnych 15 sekund aktualizacji. Poniżej znajdziesz opis parametrów i ich wartości:

    • rssi: zakres to od 0 do 31, a 99 oznacza wartość nieznaną.
    • ber: zakres to od 0 do 7 i 99 w przypadku nieznanego.
  • gsm signal-profile num: ustawia profil siły sygnału. num to liczba z zakresu od 0 do 4.

  • cdma ssource source Ustawia bieżące źródło subskrypcji CDMA, gdzie źródło to lista dozwolonych oparta na sieci, która zawiera subskrybentów operatora CDMA i ich wartości w następujący sposób:

    • nv: odczytuje subskrypcję z pamięci RAM typu non-volatile.
    • ruim: odczytuje subskrypcję z wymiennego modułu tożsamości użytkownika (RUIM).
  • cdma prl_version version: zrzuca bieżącą wersję preferowanej listy roamingowej (PRL). Numer wersji dotyczy bazy danych PRL, która zawiera informacje używane podczas procesu wyboru i pozyskiwania systemu.

Zarządzanie czujnikami na emulatorze

Te polecenia dotyczą czujników dostępnych w AVD. Oprócz używania polecenia czujnika możesz wyświetlać i dostosowywać ustawienia w emulatorze na ekranie Wirtualne czujniki na kartach Akcelerometr i Dodatkowe czujniki.

  • Stan czujnika: zawiera listę wszystkich czujników i ich stanów.

  • sensor get sensor-name: pobiera ustawienia czujnika o nazwie sensor-name. Ten przykład pobiera wartość czujnika przyspieszenia:

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

    Wartości przyspieszenia rozdzielone dwukropkami(:) odnoszą się do współrzędnych x, y i z wirtualnych czujników.

  • sensor set sensor-name value-x:value-y:value-z: ustawia wartości dla elementu sensor-name. W tym przykładzie czujnik przyspieszenia jest ustawiony na wartości x, y i z rozdzielone dwukropkami.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Emulacja SMS-ów

  • sms send sender-phone-number textmessage Generuje emulowany przychodzący SMS. Poniżej znajdziesz listę parametrów i ich wartości:

    • sender-phone-number: zawiera dowolny ciąg znaków numerycznych.
    • textmessage: SMS.

    Ten przykładowy kod wysyła wiadomość „hi there” na numer telefonu 4085555555:

    sms send 4085555555 hi there
    

Konsola przekazuje SMS-a do platformy Androida, która przekazuje go do aplikacji na emulatorze obsługującej SMS-y, np. do aplikacji Wiadomości. Jeśli przekażesz 10 cyfr, aplikacja sformatuje je jako numer telefonu. Dłuższe lub krótsze ciągi znaków numerycznych wyświetlają się w taki sposób, w jaki zostały wysłane.

Symulacja odcisku palca

  • finger touch fingerprint-id: symuluje dotknięcie czytnika palcem.

  • finger remove: symuluje usunięcie palca.

Instrukcje korzystania z tych poleceń znajdziesz w sekcji symulacja i weryfikacja odcisku palca.

Nagrywanie ekranu

Polecenie nagrywania ekranu umożliwia przechwytywanie wysokiej jakości plików wideo z fizycznego wyświetlacza emulatora bezpośrednio z systemu hosta. Jest to bardzo przydatne w przypadku potoków trybu ciągłej integracji i automatycznego raportowania błędów.

  • screenrecord {start| stop} file Rozpoczyna lub zatrzymuje proces nagrywania ekranu.
    • start file: rozpoczyna nagrywanie filmu. Plik wyjściowy musi mieć obowiązkowe rozszerzenie .webm. Przechwycony film jest zapisywany bezpośrednio w katalogu wyjściowym konsoli AVD:~/.android/avd/avd_name.avd/console_out/file.
    • stop file: zatrzymuje aktywny proces nagrywania ekranu.

Automatyzacja i makra

Podsystem automatyzacji umożliwia programistom rejestrowanie przejść stanu makra na działającym urządzeniu wirtualnym i odtwarzanie ich w celu wykonywania zautomatyzowanych testów.

  • automation {record| stop-record| play| stop-play} Zarządza automatycznymi nagraniami makr.
    • record: rozpoczyna rejestrowanie zmian stanu urządzenia i danych wejściowych.
    • stop-record: zatrzymuje bieżącą sesję nagrywania makra.
    • play: rozpoczyna odtwarzanie zarejestrowanej sekwencji makra.
    • stop-play: zatrzymuje aktywną sekwencję odtwarzania makra.

Fizyka (6DoF)

Polecenia fizyki służą do rejestrowania rzeczywistych pozycji przestrzennych w przypadku modeli ruchu fizycznego o 6 stopniach swobody (6DoF), które są używane do symulowania zaawansowanego śledzenia ruchu.

  • physics {record-gt| stop} Zarządza nagraniami modelu pozycji fizycznej.
    • record-gt: rozpoczyna nagrywanie danych o ruchu 6DoF.
    • stop: zatrzymuje bieżący proces nagrywania danych referencyjnych.

Zaawansowane sterowanie urządzeniami

Ta sekcja zawiera wysoce wyspecjalizowane punkty końcowe poleceń konsoli do zaawansowanych konfiguracji emulacji, w tym serwery proxy sieci, konfiguracje z wieloma wyświetlaczami, zastępowanie renderowania i bezpośrednie debugowanie hipernadzorcy.

  • multidisplay {add| del} Dodaje lub usuwa dodatkowe wirtualne monitory do testowania konfiguracji z wieloma ekranami. Uwaga: dodatkowe monitory nie są obsługiwane w przypadku urządzeń składanych, takich jak Pixel Fold, ani emulatorów z możliwością zmiany rozmiaru.

  • proxy {set| clear} Konfiguruje przekazywanie sieciowego serwera proxy programowo z konsoli.

    • set host port: Konfiguruje ustawienia serwera proxy.
    • clear: przywraca domyślne ustawienia serwera proxy. Uwaga: operacje ustawiania serwera proxy nie działają w środowiskach wykonawczych bez interfejsu.
  • virtualscene-image {wall| table} image_path Dostosowuje ściany w tle lub poziome stoły wyświetlane w przekazie z kamery sceny wirtualnej za pomocą niestandardowego pliku obrazu użytkownika.

  • resize-display scale Dynamicznie dostosowuje rozdzielczość ekranu w ramach wstępnie ustawionych skal. Uwaga: dostosowania rozdzielczości nie są obsługiwane w konfiguracjach bez monitora.

  • nodraw {on| off} Wyłącza renderowanie fizycznego interfejsu GUI na ekranie hosta, aby zmniejszyć obciążenie pamięci systemowej i procesora graficznego podczas automatyzacji bez interfejsu w tle przy dużej liczbie uruchomień.

  • grpc port Konfiguruje zaawansowane programowe sterowanie urządzeniami za pomocą niestandardowych punktów końcowych portu gRPC.

  • qemu monitor Zapewnia bezpośredni interaktywny dostęp do terminala konsoli bazowego hiperwizora. To polecenie można wpisać tylko w aktywnych sesjach konsoli Telnet.

  • icebox track pid Umożliwia automatyczne tworzenie migawek systemu, gdy w określonym procesie aplikacji wystąpi nieobsłużony wyjątek lub awaria.

  • phonenumber number Ustawia wirtualny lokalny numer telefonu urządzenia docelowego.

Interfejs programowy gRPC

Nowoczesne wersje emulatora obsługują zaawansowany interfejs programowy gRPC oraz starszą konsolę Telnet. Konsola Telnet świetnie sprawdza się w przypadku szybkich sesji interaktywnych lub prostego skryptowania, ale interfejs gRPC został zaprojektowany z myślą o wysokiej wydajności, bezpieczeństwie i niezawodnej automatycznej kontroli w środowiskach ciągłej integracji (CI) i bez interfejsu graficznego. Dzięki oferowaniu bezpośrednich punktów końcowych usługi gRPC eliminuje konieczność analizowania strumieni tekstowych, zarządzania uzgadnianiem sesji terminala czy udostępniania niezaszyfrowanych portów hosta lokalnego.

Aby ułatwić wybór między starszą konsolą Telnet a nowoczesnym interfejsem programowym gRPC, zapoznaj się z tym porównaniem wydajności, bezpieczeństwa i funkcji:

Funkcja Konsola Telnet Interfejs gRPC
Najlepsze zastosowania Ręczne debugowanie, sesje interaktywne. Bezobsługowe CI/CD, rozbudowane platformy testów automatycznych.
Szybkość Wolniejsze; narzut tekstowy, opóźnienie połączenia. Zoptymalizowany, multipleksowany HTTP/2, szybki protokół.
Bezpieczeństwo Niezaszyfrowane; porty lokalne (5554–5585). Może być zabezpieczony protokołem TLS i działać w sieciach.
Transmisje Nieobsługiwane; tylko żądanie-odpowiedź. Strumienie do logcat, przechwytywanie dźwięku gościa.
Media Zapisuje pliki wyjściowe na dysku hosta lub gościa. Bezpośrednie bufory binarne przesyłane przewodowo.
System operacyjny gościa Ograniczone do stałych poleceń emulatora. Uruchamia natywne polecenia powłoki bash gościa.

Uruchamianie i wywoływanie gRPC

Aby używać punktów końcowych gRPC, uruchom emulator Androida z wiersza poleceń i dodaj flagę -grpc, określając docelowy port pętli zwrotnej.

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

Gdy emulator będzie działać z włączoną usługą gRPC, możesz wykonywać programowe wywołania RPC. Do testowania wiersza poleceń użyj narzędzia grpcurl, aby komunikować się z usługami emulatora. Wszystkie żądania są formatowane w JSON i wysyłane w postaci zwykłego tekstu.

# 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

Mapowanie konsoli Telnet na usługę gRPC

W poniższej tabeli referencyjnej znajdziesz mapowanie starszych poleceń konsoli Telnet na odpowiadające im usługi i metody gRPC. Zawiera ona też informacje o tym, jak programowo zautomatyzować typowe interakcje z urządzeniem wirtualnym:

Kategoria Starsze polecenie Telnet Usługa / metoda gRPC
Status ping EmulatorController/getStatus
Status avd name incubating.AvdService/getAvdInfo
Status kill EmulatorController/setVmState
Status restart EmulatorController/setVmState
Moc power display EmulatorController/getBattery
Moc power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
Czujniki sensor set incubating.SensorService/setSensor
Biometria finger touch EmulatorController/sendFingerprint
Postawa posture EmulatorController/setPosture
Postawa physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Połączenie GSM gsm call EmulatorController/sendPhone
Połączenie GSM phonenumber EmulatorController/setPhoneNumber
Przekierowanie redir add Waterfall/ForwardPort
Wejście event send EV_KEY EmulatorController/sendKey
Wejście event send EV_ABS EmulatorController/sendTouch
Media screenrecord incubating.ScreenRecording
Renderowanie nodraw EmulatorController/setDisplayMode
Zrzuty avd snapshot list SnapshotService/ListSnapshots
Zrzuty avd snapshot load/save SnapshotService/LoadSnapshot

Polecenia programowe unikalne dla gRPC

Interfejs gRPC udostępnia kilka zaawansowanych funkcji, których nie można fizycznie wykonać za pomocą starszych połączeń konsoli Telnet. Obejmują one bezpośrednie przesyłanie strumieniowe logcat, dwukierunkowe przechwytywanie lub wstawianie dźwięku, modyfikacje interfejsu GUI hosta i bezpośredni dostęp do powłoki.

Usługa / metoda gRPC Parametr Możliwości
streamLogcat {"maxLines": 100} Przesyła dane wyjściowe logcat dziennika systemowego gościa
streamAudio {} Przesyła dźwięk z głośnika przez przewód.
injectAudio {"audio": "..."} Wstawia strumienie audio z mikrofonu
UiController {"theme": "DARK"} Modyfikuje motywy okien hosta.
Waterfall/Exec {"cmd": "ls"} Uruchamia natywne polecenia powłoki systemu operacyjnego gościa

Symulacja i weryfikacja odcisku palca

Rysunek 1. Ekran uwierzytelniania odciskiem palca.

Użyj polecenia finger, aby symulować i weryfikować uwierzytelnianie za pomocą odcisku palca w aplikacji. Wymagane są SDK Tools w wersji 24.3 lub nowszej oraz Android 6.0 (API na poziomie 23) lub nowszy.

Aby zasymulować i sprawdzić uwierzytelnianie za pomocą odcisku palca:

  1. Jeśli nie masz jeszcze identyfikatora odcisku palca, zarejestruj nowy odcisk palca w emulatorze, wybierając Ustawienia > Zabezpieczenia > Odcisk palca i postępując zgodnie z instrukcjami rejestracji.

  2. Skonfiguruj aplikację, aby akceptowała uwierzytelnianie odciskiem palca. Po zakończeniu konfiguracji na urządzeniu pojawi się ekran uwierzytelniania odciskiem palca.

  3. Gdy aplikacja wyświetli ekran uwierzytelniania odciskiem palca, otwórz konsolę i wpisz polecenie finger touch oraz utworzony identyfikator odcisku palca. Symuluje to dotknięcie palcem.

  4. Następnie wpisz polecenie finger remove, aby zasymulować usunięcie palca. Aplikacja powinna zareagować tak, jakby użytkownik dotknął czytnika linii papilarnych, a następnie zdjął z niego palec.