Invia comandi della console emulatore

Ogni dispositivo virtuale in esecuzione fornisce una console che ti consente di eseguire query e controllare l'ambiente del dispositivo emulato. Ad esempio, puoi utilizzare la console per gestire il reindirizzamento delle porte, le caratteristiche di rete e gli eventi di telefonia mentre la tua app viene eseguita sull'emulatore.

I seguenti comandi richiedono che sia già in esecuzione un emulatore. Per maggiori informazioni sull'esecuzione di un emulatore, vedi Eseguire app sull'emulatore Android e Avviare l'emulatore dalla riga di comando.

Avviare e interrompere una sessione della console

Per accedere alla console e inserire i comandi da una finestra del terminale, utilizza telnet per connetterti alla porta della console e fornire il token di autenticazione. Ogni volta che la console mostra OK, è pronta ad accettare i comandi. Non esiste un prompt tipico.

Per connetterti alla console di un dispositivo virtuale in esecuzione:

  1. Apri una finestra del terminale e inserisci il comando seguente:

    telnet localhost console-port
    

    Il titolo della finestra dell'emulatore elenca il numero di porta della console quando viene eseguito in una finestra separata, ma non quando viene eseguito in una finestra degli strumenti. Ad esempio, il titolo della finestra di un emulatore che utilizza la porta della console 5554 potrebbe essere Pixel8_API_34:5554. Inoltre, il comando adb devices stampa un elenco dei dispositivi virtuali in esecuzione e dei relativi numeri di porta della console. Per maggiori informazioni, consulta la pagina Query per i dispositivi.

    Nota:l'emulatore è in attesa di connessioni sulle porte da 5554 a 5585 e accetta connessioni solo da localhost.

  2. Dopo che la console visualizza OK, inserisci il comando auth auth_token.

    Prima di poter inserire i comandi della console, la console dell'emulatore richiede l'autenticazione. auth_token deve corrispondere ai contenuti del file .emulator_console_auth_token nella directory home.

    Se il file non esiste, il comando telnet localhost console-port crea il file, che contiene un token di autenticazione generato in modo casuale. Per disattivare l'autenticazione, elimina il token dal file .emulator_console_auth_token o crea un file vuoto se non esiste.

  3. Una volta connesso alla console, inserisci i comandi della console.

    Inserisci help, help command o help-verbose per visualizzare un elenco di comandi della console e scoprire di più su comandi specifici.

  4. Per uscire dalla sessione della console, inserisci quit o exit.

Ecco una sessione di esempio:

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

Comandi di tipo "fire and forget"

Se non hai bisogno che la sessione sia aperta, utilizza la scorciatoia adb emu, che esegue il comando e restituisce immediatamente il controllo alla shell di chiamata:

adb emu command commandParameter

L'invocazione con adb emu si connette all'emulatore disponibile. Se hai più emulatori in esecuzione contemporaneamente, devi passare il numero di serie dell'emulatore specifico di destinazione:

adb -s emulator-serial emu command commandParameter

Riferimento ai comandi dell'emulatore

Gli elenchi seguenti descrivono i comandi della console dell'emulatore con i relativi parametri e valori:

Comandi generici

  • avd {stop| start| status| name} Esegue query, controlla e gestisce il dispositivo virtuale nel seguente modo:

    • stop: interrompe l'esecuzione del dispositivo.
    • start: avvia l'esecuzione del dispositivo.
    • status: esegue query sullo stato del dispositivo virtuale, che può essere in esecuzione o arrestato.
    • name: esegue una query sul nome del dispositivo virtuale.
  • avd snapshot {list| save name| load name| delete name} Salva e ripristina lo stato del dispositivo negli snapshot, come segue:

    • list: elenca tutti gli snapshot salvati.
    • save name: salva lo snapshot con il nome.
    • load name: carica lo snapshot denominato.
    • delete name: elimina lo snapshot denominato.

    L'esempio seguente salva uno snapshot con il nome firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: chiude il dispositivo per visualizzare la configurazione dello schermo più piccolo, se il dispositivo è pieghevole e attualmente aperto.

  • apri: apre il dispositivo per visualizzare la configurazione dello schermo più grande, se il dispositivo è pieghevole e attualmente chiuso.

  • kill: termina il dispositivo virtuale.

  • ping: verifica se il dispositivo virtuale è in esecuzione.

  • rotate: ruota la durata di visualizzazione media in senso antiorario con incrementi di 45 gradi.

Arresto anomalo dell'emulatore

  • crash: l'emulatore si arresta in modo anomalo durante l'esecuzione dell'app.

  • crash-on-exit: l'emulatore si arresta in modo anomalo quando l'app viene chiusa.

Tag di debug

  • debug tags ...: attiva o disattiva i messaggi di debug di parti specifiche dell'emulatore. Il parametro tags deve essere un valore dell'elenco dei tag di debug che viene visualizzato quando esegui emulator -help-debug-tags. Per saperne di più sull'opzione -help-debug-tags, consulta la tabella delle opzioni utilizzate di frequente. L'esempio seguente attiva il tag radio:

    debug radio
    

Reindirizzamento delle porte

  • redir list: elenca il reindirizzamento delle porte corrente.

  • redir add protocol:host-port:guest-port Aggiunge un nuovo reindirizzamento della porta, come segue:

    • protocol: deve essere tcp o udp.
    • host-port: il numero di porta da aprire sull'host.
    • guest-port: il numero di porta a cui indirizzare i dati sull'emulatore.
  • redir del protocol:host-port Elimina un reindirizzamento della porta.

    • protocol: deve essere tcp o udp.
    • host-port: il numero di porta da aprire sull'host.

Posizione geografica

Imposta la posizione geografica segnalata alle app in esecuzione all'interno di un emulatore inviando una correzione GPS all'emulatore.

Puoi emettere uno dei seguenti comandi geografici non appena un dispositivo virtuale è in esecuzione. L'emulatore imposta la posizione inserita creando un provider di posizione fittizia. Questo fornitore risponde ai listener di localizzazione impostati dalle app e fornisce la posizione a LocationManager. Qualsiasi app può interrogare il gestore della posizione per ottenere la correzione GPS corrente per il dispositivo emulato chiamando LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: invia una correzione GPS semplice all'emulatore. Specifica la longitudine e la latitudine in gradi decimali. Utilizza un numero da 1 a 12 per specificare il numero di satelliti da utilizzare per determinare la posizione e specifica l'altitudine in metri e la velocità in nodi.

  • geo nmea sentence: invia una frase NMEA 0183 al dispositivo emulato come se fosse stata inviata da un modem GPS emulato. Inizia la frase con "$GP". Al momento sono supportate solo le frasi '$GPGGA' e '$GPRCM'. L'esempio seguente è una frase GPGGA (Global Positioning System Fix Data) che recupera l'ora, la posizione e i dati di correzione per un ricevitore 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
    

Eventi hardware fittizi

Il sottosistema di eventi hardware della console dell'emulatore ti consente di simulare praticamente qualsiasi interazione fisica con il dispositivo. Sono inclusi pulsanti fisici, tocchi/gesti sullo schermo, quadranti rotativi, input joystick e interruttori hardware.

  • tipi di evento: elenca tutti i tipi di evento falsi. Per gli eventi che hanno codici, il numero di codici è elencato tra parentesi a destra. Output di esempio:

    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 ...]: invia uno o più tipi di eventi falsi.

  • Tipo di codici evento: elenca i codici evento per il tipo di evento fittizio specificato.

  • event send type[:code]:[value] [...]: invia uno o più eventi falsi con codici e valori di codice facoltativi.

EV_KEY - Key Code References

Il tipo di evento EV_KEY viene utilizzato per simulare la pressione e il rilascio dei pulsanti. Le tabelle seguenti dividono il vasto elenco di codici chiave supportati in categorie logiche. Per ogni codice chiave, l'invio di un valore di 1 simula una pressione, mentre un valore di 0 simula un rilascio. Un valore di 2 rappresenta la ripetizione di un tasto.

Sottotabella A: Tasti di sistema Android
Codice Descrizione
KEY_HOME Attivazione del pulsante Home
KEY_BACK Trigger del pulsante Indietro
KEY_MENU Pulsante Menu (extra)
KEY_POWER Tasto di accensione (pressione/pressione prolungata)
KEY_VOLUMEUP Attivazione del pulsante Alza il volume
KEY_VOLUMEDOWN Attivatore del pulsante Abbassa il volume
KEY_CAMERA Pulsante di scatto fisico della fotocamera
KEY_FOCUS Otturatore della messa a fuoco automatica della fotocamera
KEY_SEARCH Attivatore del pulsante Cerca
KEY_SLEEP Trigger del comando di sospensione
KEY_WAKEUP Trigger del comando di attivazione
KEY_NOTIFICATION Apri il riquadro a scomparsa delle notifiche
KEY_MUTE Disattivare l'uscita audio di sistema
KEY_MICMUTE Disattivare l'input del microfono
KEY_BRIGHTNESSDOWN Diminuire la luminosità del display
KEY_BRIGHTNESSUP Aumentare la luminosità del display
KEY_PHONE Apri l'app Telefono predefinita
KEY_SEND Inviare o avviare una chiamata
KEY_HEADSETHOOK Hook cuffie (rispondi/riaggancia)
KEY_SCREEN comando di attivazione del salvaschermo
KEY_CONFIG Menu di sistema di configurazione
KEY_SWITCHVIDEOMODE Cambiare la modalità video del sistema
KEY_KBDILLUMTOGGLE Attivare/disattivare la retroilluminazione della tastiera
Tabella secondaria B: Controlli multimediali e di riproduzione
Codice Descrizione
KEY_PLAYPAUSE Attiva/disattiva lo stato di riproduzione e pausa
KEY_PLAY Avviare la riproduzione di contenuti multimediali
KEY_PAUSECD Metti in pausa la riproduzione del CD
KEY_STOPCD Interrompi la riproduzione del CD
KEY_NEXTSONG Vai alla traccia successiva
KEY_PREVIOUSSONG Passa alla traccia precedente
KEY_REWIND Riavvolgi la traccia attiva
KEY_FASTFORWARD Avanzamento rapido della traccia attiva
KEY_RECORD Registra comando di attivazione
KEY_SHUFFLE Attivare/disattivare la riproduzione casuale
KEY_REPEAT Attiva/disattiva la riproduzione ripetuta
KEY_MEDIA Attivazione tasto multimediale
Sottotabella C: tastiere generali e di navigazione
Codice Descrizione
KEY_UP Direzione D-pad - Su
KEY_DOWN Direzione D-pad - Giù
KEY_LEFT Direzione D-pad - Sinistra
KEY_RIGHT Direzione D-pad - Destra
KEY_PAGEUP Navigazione Pagina su
KEY_PAGEDOWN Navigazione verso il basso della pagina
KEY_INSERT Inserisci trigger tasto
KEY_DELETE Elimina trigger di tasto
KEY_ENTER Inserisci il trigger del tasto
KEY_ESC Trigger del tasto Esc
KEY_TAB Trigger del tasto Tab
KEY_SPACE Attivazione del tasto della barra spaziatrice
KEY_BACKSPACE Trigger del tasto Backspace
KEY_CLEAR Cancella buffer di input
KEY_CANCEL Annulla l'azione attiva
KEY_OK Conferma/Ok selezione
KEY_SELECT Seleziona trigger elemento
KEY_GOTO Vai al luogo designato
KEY_HELP Accedere al contesto della guida
Tabella secondaria D: Caratteri alfanumerici e simboli del tastierino
  • Lettere standard dell'alfabeto:da KEY_A a KEY_Z (26 codici).
  • Tasti del tastierino numerico:da KEY_1 a KEY_0 (10 codici).
Codice Simbolo carattere
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (tastierino numerico)
KEY_KPPLUS + (tastierino numerico)
KEY_KPMINUS - (tastierino numerico)
KEY_KPDOT . (tastierino numerico)
KEY_KPSLASH / (tastierino numerico)
KEY_KPENTER Invio (tastierino numerico)
KEY_KPEQUAL = (tastierino numerico)
KEY_KPCOMMA , (tastierino numerico)
KEY_KPJPCOMMA , (layout giapponese)
KEY_KPLEFTPAREN ( (tastierino numerico)
KEY_KPRIGHTPAREN ) (tastierino numerico)
KEY_KPPLUSMINUS ± (tastierino numerico)
Tabella secondaria E: Tasti di modifica e funzione
  • Tasti funzione standard:da KEY_F1 a KEY_F24 (24 codici).
Codice Descrizione
KEY_LEFTSHIFT Modificatore della tastiera Maiusc sinistro
KEY_RIGHTSHIFT Modificatore della tastiera Maiusc destro
KEY_LEFTCTRL Modificatore della tastiera Controllo sinistro
KEY_RIGHTCTRL Tasto di modifica della tastiera Controllo destro
KEY_LEFTALT Tasto di modifica della tastiera Alt sinistro
KEY_RIGHTALT Tasto di modifica Alt Gr
KEY_LEFTMETA Tasto Meta/Command sinistro
KEY_RIGHTMETA Tasto Meta/Command destro
KEY_CAPSLOCK Attivazione/disattivazione della tastiera Bloc Maiusc
KEY_NUMLOCK Pulsante di attivazione/disattivazione della tastiera Bloc Num
KEY_SCROLLLOCK Attivazione/disattivazione della tastiera Bloc Scorr
KEY_COMPOSE Componente aggiuntivo per la composizione dei caratteri
KEY_FN Tasto FN della tastiera fisica
KEY_FN_ESC Combinazioni di tasti funzione
KEY_FN_1 Scorciatoia per la funzione speciale 1
KEY_FN_2 Scorciatoia per la funzione speciale 2
KEY_FN_D Scorciatoia per la funzione speciale D
KEY_FN_E Scorciatoia per la funzione speciale E
KEY_FN_F Scorciatoia per la funzione speciale F
KEY_FN_S Scorciatoia per la funzione speciale S
KEY_FN_B Scorciatoia per la funzione speciale B
Sottotabella F: Gamepad e joystick
Codice Descrizione
BTN_A/BTN_B/BTN_C Pulsanti frontali del controller A/B/C
BTN_X/BTN_Y/BTN_Z Pulsanti frontali del controller X/Y/Z
BTN_START Pulsante del menu Start del gamepad
BTN_SELECT Pulsante di selezione del gamepad
BTN_MODE Interruttore della modalità del controller
BTN_TL/BTN_TR Pulsanti dorsali sinistro / destro
BTN_TL2/BTN_TR2 Grilletti analogici sinistro / destro
BTN_THUMBL/BTN_THUMBR Clic su levetta analogica sinistra / destra
BTN_DPAD_UP Trigger D-pad su del gamepad
BTN_DPAD_DOWN Trigger D-pad - Giù del gamepad
BTN_DPAD_LEFT Grilletto sinistro del D-pad del gamepad
BTN_DPAD_RIGHT Grilletto destro del D-pad del gamepad
BTN_THUMB Grilletto principale del joystick
BTN_TOP/BTN_TOP2 Pulsanti superiori del joystick
BTN_PINKIE Pulsanti del mignolo del joystick
Da BTN_BASE a _BASE6 Pulsanti della base della piattaforma del joystick
BTN_DEAD Flag della zona morta del gamepad inattiva
BTN_TRIGGER Trigger manuale del joystick fisico
BTN_JOYSTICK Codice di input generico del joystick
Tabella secondaria G: input mouse, tocco e stilo
Codice Descrizione
BTN_MOUSE Evento generico del puntatore del mouse
BTN_LEFT Clic con il tasto sinistro del mouse
BTN_RIGHT Clic con il pulsante destro del mouse
BTN_MIDDLE Clic con rotellina di scorrimento centrale
BTN_SIDE Attivatore del tasto laterale di navigazione
BTN_EXTRA Attivazione del tasto extra del mouse
BTN_FORWARD Clic sulla navigazione avanti del browser
BTN_BACK Fare clic sulla navigazione indietro del browser
BTN_TASK Tasto di selezione delle attività di sistema
BTN_TOUCH Contatto fisico con lo schermo rilevato
BTN_STYLUS Prossimità della penna stilo attiva
BTN_STYLUS2 Interruttore del cilindro secondario sullo stilo
BTN_TOOL_PEN Identificatore dello strumento penna stilo
BTN_TOOL_RUBBER Identificatore dello strumento gomma dello stilo
BTN_TOOL_BRUSH Identificatore dello strumento pennello di Painter
BTN_TOOL_PENCIL Identificatore dello strumento Matita di precisione
BTN_TOOL_AIRBRUSH Identificatore dello strumento di pittura ad aerografo
BTN_TOOL_FINGER Contatto del dito con il touch screen
BTN_TOOL_MOUSE Identificatore strumento mouse esterno
BTN_TOOL_LENS Strumento lente di ingrandimento ottica
BTN_TOOL_DOUBLETAP Flag di velocità del doppio tocco del gesto
BTN_TOOL_TRIPLETAP Flag di velocità del triplo tocco con gesto
Subtable H: Application Shortcuts
Codice Azione target
KEY_WWW Avvia il browser web predefinito
KEY_MAIL Apre il client di posta predefinito
KEY_BOOKMARKS Apre l'elenco dei preferiti del browser
KEY_CALC Apre l'utilità della calcolatrice
KEY_FILE Apre Esplora file locali
KEY_EDIT Trigger Modifica al documento
KEY_NEW Documento crea nuovo trigger
KEY_OPEN Trigger di apertura del documento
KEY_SAVE Trigger attività di salvataggio file
KEY_CLOSE Trigger attività di chiusura file
KEY_PRINT Trigger dell'attività di stampa di file
KEY_COPY Azione di copia del buffer degli appunti
KEY_PASTE Azione di inserimento del buffer degli appunti
KEY_CUT Azione di taglio del buffer degli appunti
KEY_UNDO Azione di annullamento del buffer degli appunti
KEY_REDO Azione Ripeti buffer degli appunti
KEY_CANCEL Buffer cancel process trigger
KEY_FIND Utilità di ricerca nei documenti
KEY_REFRESH Utilità di aggiornamento dei documenti
KEY_EXIT Utilità di chiusura dei documenti
KEY_DOCUMENTS Avvia il portale dei documenti di sistema
KEY_HOMEPAGE Avvia il browser della home page
KEY_FAVORITES Apre il portale dei preferiti del browser
KEY_CHAT Avvia la messaggistica istantanea
KEY_EMAIL Trigger di lancio dell'email alternativa
KEY_FINANCE Apri l'utilità per azioni/finanza
KEY_SPORT Apri l'utilità di monitoraggio dello sport
KEY_SHOP Apri il portale di shopping digitale
KEY_PLAYER Apri il lettore multimediale principale
KEY_MP3 Apri il lettore MP3 principale
KEY_TEXT Apri l'editor di testo predefinito
KEY_LIST Apri l'utilità dell'elenco di controllo
KEY_MEMO Apri l'utilità Blocco note / memo
KEY_CALENDAR Apre il portale del calendario / dell'agenda
KEY_DIRECTORY Apre la directory degli indirizzi di sistema
KEY_COMPUTER Apre l'esploratore delle specifiche
KEY_TV/KEY_TV2 Apre il portale della televisione
KEY_RADIO Avvia l'utilità della radio
KEY_CD/KEY_DVD Attiva il lettore di unità ottica
KEY_AUDIO/KEY_VIDEO Accede alle specifiche dei contenuti multimediali
KEY_TUNER Configura ricevitori/sintonizzatori
KEY_SAT/KEY_SAT2 Configura i feed satellitari
KEY_TAPE Riproduci il deck di riproduzione di contenuti multimediali su nastro
KEY_VCR Riproduci il feed del lettore VCR
KEY_VCR2 Riproduci il feed del secondo giocatore del VCR
KEY_AUX Ingressi della porta multimediale ausiliaria
KEY_SETUP Menu di configurazione dell'installazione
Da KEY_PROG1 a _PROG4 Tasti di programma definiti dall'utente
KEY_ZOOM Attivazione/disattivazione dell'area visibile con zoom
KEY_MODE Selezione della modalità dell'area visibile
KEY_KEYBOARD Mostra/nascondi tastiera virtuale
KEY_LANGUAGE Cambiare la lingua della traccia audio
KEY_TITLE Apri le opzioni del titolo del media
KEY_SUBTITLE Attiva/disattiva l'interfaccia dei sottotitoli
KEY_ANGLE Modificare le angolazioni della videocamera
KEY_EPG Apri la guida elettronica ai programmi
KEY_PVR Apri il videoregistratore personale
KEY_MHP Piattaforma di intrattenimento domestico aperta
KEY_CHANNEL Apri i canali del sintonizzatore TV
KEY_CHANNELUP Sintonizza il canale TV verso l'alto
KEY_CHANNELDOWN Sintonizza il canale TV verso il basso
KEY_RED Pulsante interattivo rosso
KEY_GREEN Pulsante interattivo verde
KEY_YELLOW Pulsante interattivo giallo
KEY_BLUE Pulsante interattivo blu
KEY_FIRST Seleziona la prima opzione dell'articolo
KEY_LAST Seleziona l'opzione Ultimo elemento
KEY_NEXT Seleziona l'opzione di traccia successiva
KEY_PREVIOUS Seleziona l'opzione di traccia precedente
KEY_RESTART Riavvia il loop della traccia multimediale
KEY_SLOW Opzione di riproduzione in slow motion
KEY_AB Loop di ripetizione della sequenza A-B
KEY_PLAYCD Comando di riproduzione del deck CD
KEY_PAUSECD Comando di pausa del lettore CD
KEY_STOPCD Comando di arresto del lettore CD
KEY_DIGITS Comando di inserimento del tastierino digitale
KEY_TEEN Opzione Valori per adolescenti del tastierino
KEY_TWEN Opzione Valori twen tastierino
KEY_DEL_EOL Elimina fino alla fine del buffer di riga
KEY_DEL_EOS Elimina fino alla fine del buffer dello schermo
KEY_INS_LINE Inserisci un nuovo buffer di riga
Da KEY_BRL_DOT1 a _DOT8 Input dei pulsanti del display braille
KEY_VOICECOMMAND Avvia l'app dell'assistente vocale
KEY_SELECTIVE_SCREEN Attiva lo strumento di cattura schermo regionale
KEY_BATTERY Esegue query sulle notifiche della batteria
KEY_STAR/KEY_SHARP Simboli del tastierino del telefono
KEY_PLUS Tastierino telefonico con simbolo Più
KEY_INFO Mostra overlay del riquadro informazioni
KEY_TIME Mostra l'ora corrente
KEY_VENDOR Query sulle specifiche del fornitore
KEY_ARCHIVE Apre l'utilità di archiviazione locale
KEY_PROGRAM Configura i parametri del programma
KEY_POWER2 Attiva l'alimentazione di backup alternativa

EV_ABS - Absolute Motion Events

Il tipo di evento EV_ABS è fondamentale per simulare tocchi precisi, gesti di trascinamento, pizzico multitocco e regolazioni del joystick. Le coordinate assolute sotto la mappa corrispondono direttamente alla risoluzione fisica dello schermo sottostante.

Codice Intervallo di coordinate Descrizione
ABS_MT_TRACKING_ID -1 o ≥0 ID monitoraggio; -1 termina il tocco
ABS_MT_POSITION_X Da 0 a 1767 Coordinata X (Pixel Fold)
ABS_MT_POSITION_Y Da 0 a 2207 Coordinata Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR pixel Larghezza dell'asse maggiore dell'area di tocco
ABS_MT_TOUCH_MINOR pixel Larghezza dell'asse minore dell'area di tocco
ABS_MT_WIDTH_MAJOR pixel Larghezza dell'asse maggiore dell'utensile
ABS_MT_WIDTH_MINOR pixel Larghezza asse minore dello strumento
ABS_MT_ORIENTATION Da 0 a 255 Angolo di orientamento del contatto
ABS_MT_PRESSURE Da 0 a 255 Magnitudo della forza di contatto
ABS_MT_DISTANCE mm Distanza di sospensione dal display
ABS_MT_TOOL_TYPE Da 0 a 2 0=dito, 1=penna, 2=matita
ABS_MT_BLOB_ID integer Identificatore del blob di contatto
ABS_MT_TOOL_X pixel Coordinata della posizione X dello strumento
ABS_MT_TOOL_Y pixel Coordinata della posizione Y dello strumento
ABS_MT_SLOT Da 0 a N Slot attivo (protocollo B)
ABS_X/_Y/_Z analogico Assi delle coordinate del joystick
ABS_RX/_RY/_RZ analogico Assi di rotazione del joystick
ABS_THROTTLE/_BRAKE analogico Pedali e comandi dello sterzo
ABS_HAT0X/_HAT0Y -1/0/1 Cappello D-pad e interruttori POV
ABS_PRESSURE Da 0 a 255 Livello di forza dello stilo / puntatore
ABS_DISTANCE mm Distanza di sospensione (penna stilo)
ABS_TILT_X/_TILT_Y gradi Angoli di inclinazione dello stilo
ABS_VOLUME analogico Livelli di volume del controller

L'interazione touch di Android è basata sui protocolli multi-touch (MT). Gli emulatori moderni implementano sia il protocollo A (senza stato, invio di pacchetti di contatti separati da segni di sincronizzazione) sia il protocollo B (con stato, assegnazione dei contatti a slot di monitoraggio dedicati). Il protocollo B consente il monitoraggio efficiente di più tocchi simultanei per gesti come il pizzico per zoomare.

EV_REL & EV_SW - Motion & Hardware Switches

La categoria di eventi EV_REL gestisce i cambiamenti relativi a puntatori o coordinate, che viene utilizzata principalmente per emulare i movimenti del mouse esterno o le rotelline di scorrimento. La categoria di eventi EV_SW gestisce gli switch dei dispositivi fisici, ad esempio se un flip phone o un tablet è chiuso o se è inserito un hardware audio esterno.

Codice Valori Descrizione
REL_X Delta Movimento orizzontale del cursore
REL_Y Delta Movimento verticale del cursore
SW_LID 0/1 Stato del coperchio del laptop (0=aperto, 1=chiuso)
SW_TABLET_MODE 0/1 Stato della modalità tablet (0=Off, 1=Active)
SW_HEADPHONE_INSERT 0/1 Stato del jack per cuffie (0=Out, 1=In)
SW_MICROPHONE_INSERT 0/1 Stato del jack del microfono (0=Out, 1=In)
Sintassi di distribuzione dei comandi

Per inviare questi codici, formatta il comando della console con tipi, codici e valori separati da due punti. Puoi mettere in coda più modifiche alle coordinate in una singola stringa. È fondamentale aggiungere sempre un segno di sincronizzazione finale (EV_SYN:0:0) per indicare che il framework dell'emulatore deve raggruppare ed elaborare questi input insieme.

Esempi di script di eventi e gesti

Poiché Telnet consente l'invio di parametri in più parti, puoi simulare sequenze di gesti fisici realistiche. Di seguito sono riportate le strutture degli script degli eventi non elaborati per automatizzare i gesti dalla console dell'organizzatore.

Simulare un tocco dello schermo

Per eseguire un tocco pulito dello schermo in corrispondenza di una coordinata di destinazione, assegna un ID monitoraggio, specifica le coordinate X e Y sullo schermo, simula il tocco del contatto, sincronizza e poi rilascia.

# 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
Simulazione di uno scorrimento verticale (swipe)

Per eseguire un gesto di scorrimento, tieni premuto il contatto sulla coordinata iniziale, invia i frame di coordinate di movimento intermedi e rilascia alla fine.

# 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
Simulazione di un gesto di pizzica per eseguire lo zoom

Per attivare lo zoom con due dita, utilizza gli slot MT attivi (0 e 1) per monitorare e coordinare due coordinate di tocco simultanee che si allontanano l'una dall'altra.

# 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
Simulazione di un cambio di connessione delle cuffie

Simula l'inserimento o la rimozione di jack per cuffie per testare gli interruttori di routing audio. Un valore di 1 rappresenta l'inserimento del jack, mentre 0 la rimozione delle cuffie.

# 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
Individuare i codici evento della console da un dispositivo reale

Per scoprire la sequenza esatta della sintassi degli eventi per qualsiasi azione o gesto personalizzato del pulsante, connettiti tramite adb shell ed esegui l'utilità di diagnostica getevent. Mentre interagisci con la GUI dell'emulatore, la console stampa i codici, i tipi e le posizioni esatti degli eventi.

# 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
  • Messaggio di evento: invia una stringa di caratteri che simulano la pressione dei tasti. Il messaggio deve essere una stringa UTF-8. I post Unicode vengono mappati al contrario in base alla tastiera del dispositivo corrente e i caratteri non supportati vengono eliminati in modo invisibile.

Controlli dello stato di alimentazione

  • Display alimentazione: mostra lo stato della batteria e del caricabatterie.

  • power ac {on| off}: imposta lo stato di ricarica CA su on o off.

  • power status {unknown| charging| discharging| not-charging| full}: Modifica lo stato della batteria come specificato.

  • power present {true| false}: imposta lo stato di presenza della batteria.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: imposta lo stato di integrità della batteria.

  • power capacity percent: imposta lo stato della capacità della batteria rimanente come percentuale da 0 a 100.

Stato della connessione di rete (solo Ethernet e rete cellulare)

  • network status: controlla lo stato della rete e le caratteristiche attuali di ritardo e velocità.

  • network delay latency Modifica la latenza di rete emulata.

    L'emulatore ti consente di simulare vari livelli di latenza di rete in modo da poter testare la tua app in un ambiente più tipico delle condizioni di esecuzione effettive. Puoi impostare un livello o un intervallo di latenza all'avvio dell'emulatore oppure puoi utilizzare la console per modificare la latenza mentre l'app è in esecuzione nell'emulatore.

    Il formato della latenza di rete è uno dei seguenti (i numeri sono millisecondi):

    Formato della latenza di rete:

  • gprs: GPRS, che utilizza un intervallo di latenza compreso tra 150 e 550.

  • edge: EDGE/EGPRS, che utilizza un intervallo di latenza minimo di 80 e massimo di 400.

  • umts: UMTS/3G, che utilizza un intervallo di latenza minimo di 35 e massimo di 200.

  • nessuno: nessuna latenza.

  • num: emula la latenza specificata in millisecondi.

  • min:max: emula l'intervallo di latenza specificato.

    Per impostare la latenza all'avvio dell'emulatore, utilizza l'opzione dell'emulatore -netdelay con un valore di latenza supportato. Esempi:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Per apportare modifiche al ritardo di rete durante l'esecuzione dell'emulatore, connettiti alla console e utilizza il comando network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed L'emulatore ti consente di simulare varie velocità di trasferimento di rete. Puoi impostare una velocità o un intervallo di trasferimento all'avvio dell'emulatore oppure puoi utilizzare la console per modificare la velocità mentre l'app è in esecuzione nell'emulatore.

    Il formato della velocità di rete è uno dei seguenti (i numeri sono kilobit/sec):

    Formato della velocità di rete:

  • gsm: GSM/CSD, che utilizza una velocità di 14,4 in upload e 14,4 in download.

  • hscsd: HSCSD, che utilizza una velocità di 14,4 in upload e 43,2 in download.

  • gprs: GPRS, che utilizza una velocità di 40.0 in upload e 80.0 in download.

  • EDGE: EDGE/EGPRS, che utilizza una velocità di 118,4 in upload e 236,8 in download.

  • umts: UMTS/3G, che utilizza una velocità di 128.0 in upload e 1920 in download.

  • hsdpa: HSDPA, che utilizza una velocità di 348,0 in upload e 14.400,0 in download.

  • lte: LTE, che utilizza una velocità di 58.000 in upload e 173.000 in download.

  • evdo: EVDO, che utilizza una velocità di 75.000 in upload e 280.000 in download.

  • Completa: velocità illimitata, ma dipende dalla velocità di connessione del computer.

  • num: imposta una velocità esatta in kilobit/sec utilizzata sia per il caricamento che per il download.

  • up:down: imposta le velocità esatte in kilobit/sec per il caricamento e il download separatamente.

    Per impostare la velocità di rete all'avvio dell'emulatore, utilizza l'opzione -netspeed dell'emulatore. Esempi:

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

    Per apportare modifiche alla velocità di rete mentre l'emulatore è in esecuzione, connettiti alla console e utilizza il comando network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Invia pacchetti a un file. Il seguente elenco descrive i parametri e i valori dei parametri:

    Nota: a partire dall'emulatore Android 36.5 e versioni successive, il traffico della connessione Wi-Fi viene gestito per impostazione predefinita da netsim. Il comando della console di acquisizione di rete acquisisce solo il traffico cellulare/WAN legacy instradato tramite lo stack QEMU slirp. Per acquisire pacchetti Wi-Fi, Bluetooth o di rete avanzata nelle versioni moderne dell'emulatore, consulta Acquisire il traffico di rete nella guida Configurazione di rete avanzata dell'emulatore.

  • start file: avvia l'acquisizione dei pacchetti di rete. Per motivi di sicurezza, il file deve essere un nome file semplice (senza separatori di percorso come / e senza ..). Il file di acquisizione dei pacchetti verrà salvato nella directory dei contenuti dell'AVD nella cartella console_out/ (ad esempio, ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: interrompe l'invio di pacchetti al file specificato.

Emulazione della telefonia

L'emulatore Android include modem GSM e CDMA emulati che ti consentono di simulare le funzioni di telefonia nell'emulatore. Ad esempio, con GSM puoi simulare chiamate in entrata e stabilire e terminare connessioni dati. Con CDMA, fornisci un'origine dell'abbonamento e l'elenco di roaming preferito. Il sistema Android gestisce le chiamate simulate esattamente come farebbe con le chiamate reali. L'emulatore non supporta l'audio delle chiamate.

  • gsm {call| accept| cancel| busy} phonenumber I parametri gsm sono i seguenti:

    • call: simula una chiamata telefonica in entrata da phonenumber.
    • accept: accetta una chiamata in arrivo da phonenumber e cambia lo stato della chiamata in attivo. Puoi impostare lo stato di una chiamata su attivo solo quando il suo stato attuale è in attesa o in attesa.
    • cancel: termina una chiamata in entrata da o in uscita verso phonenumber.
    • occupato: chiude una chiamata in uscita al numero di telefono e cambia lo stato della chiamata in occupato. Puoi impostare lo stato di una chiamata su occupato solo quando il suo stato attuale è in attesa.
  • gsm {data| voice} state Il comando per lo stato dei dati modifica lo stato della connessione dati GPRS, mentre il comando per lo stato della voce modifica lo stato della connessione voce GPRS, come segue:

    • non registrato: nessuna rete disponibile.
    • home: sulla rete locale, non in roaming.
    • Roaming: sulla rete di roaming.
    • Ricerca in corso: ricerca di reti in corso.
    • Negato: solo chiamate di emergenza.
    • off: come non registrato.
    • on: come a casa.
  • gsm hold: cambia lo stato di una chiamata in attesa. Puoi modificare lo stato di una chiamata in attesa solo quando il suo stato attuale è attivo o in attesa.

  • Elenco gsm: elenca tutte le chiamate in entrata e in uscita e i relativi stati.

  • gsm status: indica lo stato attuale di voce/dati GSM. I valori sono quelli descritti per i comandi vocali e dati.

  • gsm signal {rssi| ber} Modifica l'intensità del segnale (rssi) e il tasso di errore di bit (ber) riportati nei successivi 15 secondi di aggiornamento. Il seguente elenco descrive i parametri e i relativi valori:

    • rssi: l'intervallo è compreso tra 0 e 31 e 99 per sconosciuto.
    • ber: l'intervallo è compreso tra 0 e 7 e 99 per sconosciuto.
  • gsm signal-profile num: imposta il profilo di intensità del segnale. num è un numero da 0 a 4.

  • cdma ssource source Imposta l'origine dell'abbonamento CDMA corrente, dove l'origine è una lista consentita basata sulla rete che contiene gli abbonati dell'operatore CDMA e i relativi valori, come segue:

    • nv: legge l'abbonamento dalla RAM non volatile.
    • ruim: legge l'abbonamento dal modulo di identità utente rimovibile (RUIM).
  • cdma prl_version version: esegue il dump della versione corrente dell'elenco di roaming preferito (PRL). Il numero di versione si riferisce al database PRL che contiene le informazioni utilizzate durante la procedura di selezione e acquisizione del sistema.

Gestire i sensori sull'emulatore

Questi comandi si riferiscono ai sensori disponibili nell'AVD. Oltre a utilizzare il comando del sensore, puoi visualizzare e regolare le impostazioni nell'emulatore nella schermata Sensori virtuali nelle schede Accelerometro e Sensori aggiuntivi.

  • Stato sensore: elenca tutti i sensori e il loro stato.

  • sensor get sensor-name: recupera le impostazioni per sensor-name. Il seguente esempio ottiene il valore del sensore di accelerazione:

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

    I valori di accelerazione separati da due punti(:) si riferiscono alle coordinate x, y e z per i sensori virtuali.

  • sensor set sensor-name value-x:value-y:value-z: imposta i valori per sensor-name. L'esempio seguente imposta il sensore di accelerazione sui valori x, y e z separati dai due punti.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Emulazione SMS

  • sms send sender-phone-number textmessage Genera un SMS in arrivo emulato. Il seguente elenco descrive i parametri e i relativi valori:

    • sender-phone-number: contiene una stringa numerica arbitraria.
    • textmessage: il messaggio SMS.

    L'esempio seguente invia il messaggio "hi there" al numero di telefono 4085555555:

    sms send 4085555555 hi there
    

La console inoltra il messaggio SMS al framework Android, che lo passa a un'app sull'emulatore che gestisce gli SMS, come l'app Messaggi. Se passi 10 numeri, l'app li formatta come numero di telefono. Le stringhe numeriche più lunghe o più corte vengono visualizzate così come le hai inviate.

Simulazione dell'impronta

  • finger touch fingerprint-id: simula un dito che tocca il sensore.

  • finger remove: simula la rimozione del dito.

Per istruzioni su come utilizzare questi comandi, consulta la sezione seguente sulla simulazione e la convalida delle impronte.

Registrazione schermo

Il comando di registrazione dello schermo consente di acquisire file video di alta qualità del display fisico dell'emulatore direttamente dal sistema host. Questa funzionalità è molto utile per le pipeline di integrazione continua e la segnalazione automatica di bug.

  • screenrecord {start| stop} file Avvia o interrompe la procedura di registrazione dello schermo.
    • start file: avvia la registrazione video. Il file di output deve terminare con l'estensione obbligatoria .webm. Il video acquisito viene salvato direttamente nella directory di output della console dell'AVD:~/.android/avd/avd_name.avd/console_out/file.
    • stop file: interrompe il processo di registrazione dello schermo attivo.

Automazione e macro

Il sottosistema di automazione consente agli sviluppatori di registrare le transizioni di stato delle macro sul dispositivo virtuale in esecuzione e riprodurle per eseguire flussi di test automatici.

  • automation {record| stop-record| play| stop-play} Gestisce le registrazioni automatiche delle macro.
    • record: avvia la registrazione delle modifiche dello stato del dispositivo e degli input.
    • stop-record: interrompe la sessione di registrazione delle macro corrente.
    • play: inizia la riproduzione di una sequenza di macro registrata.
    • stop-play: interrompe la sequenza di riproduzione della macro attiva.

Fisica (6DoF)

I comandi fisici gestiscono la registrazione delle pose spaziali di riferimento per i modelli di movimento fisico a sei gradi di libertà (6DoF), che vengono utilizzati per simulare il monitoraggio avanzato del movimento.

  • physics {record-gt| stop} Gestisce le registrazioni del modello di postura fisica.
    • record-gt: inizia a registrare i dati di movimento 6DoF di riferimento.
    • stop: interrompe il processo di registrazione della verità di base corrente.

Controlli avanzati dei dispositivi

Questa sezione aggrega endpoint di comando della console altamente specializzati per configurazioni di emulazione avanzate, tra cui proxy di rete, configurazioni multi-display, override di rendering e debug diretto dell'hypervisor.

  • multidisplay {add| del} Aggiunge o elimina monitor virtuali secondari per testare configurazioni multischermo. Nota: i monitor secondari non sono supportati sui profili pieghevoli come Pixel Fold o l'emulatore ridimensionabile.

  • proxy {set| clear} Configura l'inoltro del proxy di rete in modo programmatico dalla console.

    • set host port: configura le impostazioni del proxy di destinazione.
    • clear: ripristina le configurazioni proxy predefinite. Nota:le operazioni di impostazione del proxy non riescono negli ambienti di esecuzione headless.
  • virtualscene-image {wall| table} image_path Personalizza le pareti di sfondo o i tavoli orizzontali visualizzati nel feed della videocamera della scena virtuale con un file immagine utente personalizzato.

  • resize-display scale Regola dinamicamente la risoluzione dello schermo tra le scale preimpostate. Nota:gli aggiustamenti della risoluzione non sono supportati nelle configurazioni headless.

  • nodraw {on| off} Disattiva il rendering della GUI fisica sullo schermo host per ridurre la memoria di sistema e il carico della GPU durante le esecuzioni di automazione headless in background ad alto volume.

  • grpc port Configura il controllo programmatico avanzato dei dispositivi sugli endpoint porta gRPC personalizzati.

  • qemu monitor Fornisce l'accesso diretto al terminale interattivo alla console dell'hypervisor sottostante. Questo comando può essere inserito solo nelle sessioni della console Telnet attive.

  • icebox track pid Attiva gli snapshot automatici del sistema quando il processo dell'app specificato riscontra un'eccezione o un arresto anomalo non gestito.

  • phonenumber number Imposta il numero di telefono locale virtuale del dispositivo di destinazione.

Interfaccia programmatica gRPC

Le versioni moderne dell'emulatore supportano una potente interfaccia programmatica gRPC insieme alla console Telnet legacy. Sebbene la console Telnet sia ideale per sessioni interattive rapide o scripting semplici, l'interfaccia gRPC è progettata per un controllo automatizzato sicuro, solido e ad alte prestazioni in ambienti di integrazione continua (CI) e headless. Offrendo endpoint di servizio diretto, gRPC elimina la necessità di analizzare i flussi di testo, gestire gli handshake delle sessioni del terminale o esporre porte localhost non criptate.

Per scegliere tra la console Telnet legacy e l'interfaccia programmatica gRPC moderna, esamina il seguente confronto tra prestazioni, sicurezza e funzionalità:

Funzionalità Console Telnet Interfaccia gRPC
Ideale per Debug manuale, sessioni interattive. CI/CD headless, banchi di prova automatizzati pesanti.
Velocità Più lento; overhead di testo, latenza della connessione. Ottimizzato; HTTP/2 multiplexato, fast proto.
Sicurezza Non criptato; porte locali (5554-5585). Può essere protetto con TLS e funziona sulle reti.
Stream Non supportato; solo richiesta-risposta. Stream per logcat, acquisizione audio ospite.
Media Scrive i file di output sul disco host/guest. Buffer binari diretti via cavo.
Sistema operativo guest Limitato ai comandi dell'emulatore fissi. Esegue i comandi della shell Bash guest nativa.

Avvio e chiamata di gRPC

Per utilizzare gli endpoint gRPC, avvia l'emulatore Android dalla riga di comando e includi il flag -grpc, specificando la porta di loopback di destinazione.

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

Una volta che l'emulatore è in esecuzione con il servizio gRPC abilitato, puoi effettuare chiamate RPC programmatiche. Per i test da riga di comando, utilizza l'utilità grpcurl per comunicare con i servizi dell'emulatore. Tutte le richieste sono formattate in JSON e inviate in testo normale.

# 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

Mappatura della console Telnet al servizio gRPC

La seguente tabella di riferimento mappa i comandi della console Telnet legacy ai servizi e ai metodi gRPC corrispondenti, indicando come automatizzare programmaticamente le interazioni comuni con i dispositivi virtuali:

Categoria Comando Telnet legacy Servizio / metodo gRPC
Stato ping EmulatorController/getStatus
Stato avd name incubating.AvdService/getAvdInfo
Stato kill EmulatorController/setVmState
Stato restart EmulatorController/setVmState
Alimentazione power display EmulatorController/getBattery
Alimentazione power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
Sensori sensor set incubating.SensorService/setSensor
Biometria finger touch EmulatorController/sendFingerprint
Postura posture EmulatorController/setPosture
Postura physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Chiamata GSM gsm call EmulatorController/sendPhone
Chiamata GSM phonenumber EmulatorController/setPhoneNumber
Reindirizzamento redir add Waterfall/ForwardPort
Ingresso event send EV_KEY EmulatorController/sendKey
Ingresso event send EV_ABS EmulatorController/sendTouch
Media screenrecord incubating.ScreenRecording
Rendering nodraw EmulatorController/setDisplayMode
Snapshot avd snapshot list SnapshotService/ListSnapshots
Snapshot avd snapshot load/save SnapshotService/LoadSnapshot

Comandi programmatici univoci per gRPC

L'interfaccia gRPC fornisce diverse funzionalità all'avanguardia che sono fisicamente impossibili da eseguire tramite connessioni alla console Telnet legacy. Questi includono lo streaming diretto di logcat, l'acquisizione o l'inserimento audio bidirezionale, modifiche alla GUI dell'host e accesso diretto alla shell.

Servizio / metodo gRPC Parametro Capacità
streamLogcat {"maxLines": 100} Trasmette gli output di logcat del sistema ospite
streamAudio {} Trasmette l'audio dello speaker via cavo
injectAudio {"audio": "..."} Inserisce stream audio del microfono
UiController {"theme": "DARK"} Modifica i temi delle finestre dell'host
Waterfall/Exec {"cmd": "ls"} Esegue i comandi della shell del sistema operativo guest nativo

Simulazione e convalida dell'impronta

Figura 1. Schermata di autenticazione tramite impronta.

Utilizza il comando finger per simulare e convalidare l'autenticazione con l'impronta per la tua app. Devi disporre di Strumenti SDK 24.3 o versioni successive e Android 6.0 (livello API 23) o versioni successive.

Per simulare e convalidare l'autenticazione con l'impronta, segui questi passaggi:

  1. Se non hai ancora un'impronta, registrane una nuova nell'emulatore selezionando Impostazioni > Sicurezza > Impronta e seguendo le istruzioni di registrazione.

  2. Configura l'app in modo che accetti l'autenticazione tramite impronta. Dopo aver eseguito questa configurazione, il dispositivo mostra la schermata di autenticazione con l'impronta.

  3. Mentre l'app mostra la schermata di autenticazione con l'impronta, vai alla console e inserisci il comando finger touch e l'ID impronta che hai creato. In questo modo viene simulato il tocco di un dito.

  4. Quindi, inserisci il comando finger remove per simulare la rimozione del dito. La tua app deve rispondere come se un utente avesse toccato e poi rimosso il dito dal sensore di impronte digitali.