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:
Apri una finestra del terminale e inserisci il comando seguente:
telnet localhost console-portIl 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 devicesstampa 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.
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_tokendeve corrispondere ai contenuti del file.emulator_console_auth_tokennella directory home.Se il file non esiste, il comando
telnet localhost console-portcrea il file, che contiene un token di autenticazione generato in modo casuale. Per disattivare l'autenticazione, elimina il token dal file.emulator_console_auth_tokeno crea un file vuoto se non esiste.Una volta connesso alla console, inserisci i comandi della console.
Inserisci
help,help commandohelp-verboseper visualizzare un elenco di comandi della console e scoprire di più su comandi specifici.Per uscire dalla sessione della console, inserisci
quitoexit.
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 firstactivitysnapshotfold: 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-portAggiunge 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-portElimina 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 OKevent 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_AaKEY_Z(26 codici). - Tasti del tastierino numerico:da
KEY_1aKEY_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_F1aKEY_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 latencyModifica 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
-netdelaycon un valore di latenza supportato. Esempi:emulator -netdelay gprs emulator -netdelay 40,100Per 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 100network speed speedL'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
-netspeeddell'emulatore. Esempi:emulator -netspeed gsm @Pixel_API_26 emulator -netspeed 14.4,80 @Pixel_API_26Per apportare modifiche alla velocità di rete mentre l'emulatore è in esecuzione, connettiti alla console e utilizza il comando
network speed:network speed 14.4 80network capture {start| stop} fileInvia 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 cartellaconsole_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} phonenumberI 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} stateIl 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 sourceImposta 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.812348I 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 textmessageGenera 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} fileAvvia 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.
- start file: avvia la registrazione video. Il file di output deve terminare con l'estensione obbligatoria
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_pathPersonalizza le pareti di sfondo o i tavoli orizzontali visualizzati nel feed della videocamera della scena virtuale con un file immagine utente personalizzato.resize-display scaleRegola 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 portConfigura il controllo programmatico avanzato dei dispositivi sugli endpoint porta gRPC personalizzati.qemu monitorFornisce 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 pidAttiva gli snapshot automatici del sistema quando il processo dell'app specificato riscontra un'eccezione o un arresto anomalo non gestito.phonenumber numberImposta 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
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:
Se non hai ancora un'impronta, registrane una nuova nell'emulatore selezionando Impostazioni > Sicurezza > Impronta e seguendo le istruzioni di registrazione.
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.
Mentre l'app mostra la schermata di autenticazione con l'impronta, vai alla console e inserisci il comando
finger touche l'ID impronta che hai creato. In questo modo viene simulato il tocco di un dito.Quindi, inserisci il comando
finger removeper 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.