Envoyer des commandes à la console de l'émulateur

Chaque appareil virtuel en cours d'exécution fournit une console qui vous permet d'interroger et de contrôler l'environnement de l'appareil émulé. Par exemple, vous pouvez utiliser la console pour gérer la redirection de port, les caractéristiques réseau et les événements téléphoniques lorsque votre application est exécutée sur l'émulateur.

Les commandes suivantes nécessitent qu'un émulateur soit déjà en cours d'exécution. Pour en savoir plus sur l'exécution d'un émulateur, consultez Exécuter des applications sur Android Emulator et Lancer l'émulateur à partir de la ligne de commande.

Démarrer et arrêter une session de console

Pour accéder à la console et entrer des commandes à partir d'une fenêtre de terminal, utilisez telnet pour vous connecter au port de la console et fournir votre jeton d'authentification. Chaque fois que la console affiche OK, elle est prête à accepter les commandes. Elle n'est pas associée à une invite type.

Pour vous connecter à la console d'un appareil virtuel en cours d'exécution :

  1. Ouvrez une fenêtre de terminal et entrez la commande suivante :

    telnet localhost console-port
    

    Le titre de la fenêtre de l'émulateur indique le numéro de port de la console lors d'une exécution dans une fenêtre distincte, mais pas dans une fenêtre d'outil. Par exemple, le titre de la fenêtre d'un émulateur utilisant le port 5554 de la console peut être Pixel8_API_34:5554. En outre, la commande adb devices affiche la liste des appareils virtuels en cours d'exécution et les numéros de port de leur console. Pour en savoir plus, consultez Requête pour des appareils.

    Remarque : L'émulateur écoute les connexions sur les ports 5554 à 5585 et n'accepte que les connexions de localhost.

  2. Une fois que la console affiche OK, saisissez la commande auth auth_token.

    Pour que vous puissiez entrer des commandes de console, la console de l'émulateur exige une authentification. auth_token doit correspondre au contenu du fichier .emulator_console_auth_token dans votre répertoire d'accueil.

    Si ce fichier n'existe pas, la commande telnet localhost console-port crée le fichier, qui contient un jeton d'authentification généré aléatoirement. Pour désactiver l'authentification, supprimez le jeton du fichier .emulator_console_auth_token ou créez un fichier vide s'il n'existe pas.

  3. Une fois connecté à la console, entrez des commandes de console.

    Entrez help, help command ou help-verbose pour afficher la liste des commandes de console et en savoir plus sur des commandes spécifiques.

  4. Pour quitter la session de console, entrez quit ou exit.

Voici un exemple de session :

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

Commandes "fire and forget"

Si vous n'avez pas besoin que la session soit ouverte, utilisez le raccourci adb emu, qui exécute la commande et renvoie immédiatement le contrôle au shell appelant :

adb emu command commandParameter

L'invocation avec adb emu se connecte à l'émulateur disponible. Si vous exécutez plusieurs émulateurs en même temps, vous devez transmettre le numéro de série de l'émulateur spécifique que vous ciblez :

adb -s emulator-serial emu command commandParameter

Documentation de référence sur les commandes de l'émulateur

Les listes suivantes décrivent les commandes de la console de l'émulateur, ainsi que leurs paramètres et valeurs :

Commandes générales

  • avd {stop| start| status| name} Interroge, contrôle et gère l'appareil virtuel comme suit :

    • stop : arrête l'exécution de l'appareil.
    • start : démarre l'exécution de l'appareil.
    • status : interroge l'état de l'appareil virtuel, qui peut être en cours d'exécution ou arrêté.
    • name : interroge le nom de l'appareil virtuel.
  • avd snapshot {list| save name| load name| delete name} Enregistre et restaure l'état de l'appareil dans des instantanés, comme suit :

    • list : affiche tous les instantanés enregistrés.
    • save name : enregistre l'instantané sous le nom "name".
    • load name : charge l'instantané nommé.
    • delete name : supprime l'instantané nommé.

    L'exemple suivant enregistre un instantané nommé firstactivitysnapshot :

    avd snapshot save firstactivitysnapshot
    
  • fold : plie l'appareil pour afficher sa configuration d'écran réduite (s'il est pliable et actuellement déplié).

  • unfold : déplie l'appareil pour afficher sa configuration d'écran agrandie (s'il est pliable et actuellement plié).

  • kill : arrête l'appareil virtuel.

  • ping : vérifie si l'appareil virtuel est en cours d'exécution.

  • rotate : fait pivoter l'AVD dans le sens inverse des aiguilles d'une montre par incréments de 45 degrés.

Plantage de l'émulateur

  • crash : fait planter l'émulateur pendant l'exécution de l'application.

  • crash-on-exit : fait planter l'émulateur lorsque l'application se ferme.

Balises de débogage

  • debug tags ... : active ou désactive les messages de débogage dans des parties spécifiques de l'émulateur. Le paramètre "tags" doit être une valeur de la liste des balises de débogage qui s'affiche lorsque vous exécutez emulator -help-debug-tags. Pour en savoir plus sur l'option -help-debug-tags, consultez le tableau des options couramment utilisées. L'exemple suivant active la balise radio :

    debug radio
    

Redirection de port

  • redir list : liste la redirection de port actuelle.

  • redir add protocol:host-port:guest-port Ajoute une nouvelle redirection de port comme suit :

    • protocol : doit être tcp ou udp.
    • host-port : numéro de port à ouvrir sur l'hôte.
    • guest-port : numéro de port vers lequel acheminer les données sur l'émulateur.
  • redir del protocol:host-port Supprime une redirection de port.

    • protocol : doit être tcp ou udp.
    • host-port : numéro de port à ouvrir sur l'hôte.

Emplacement géographique

Définit l'emplacement géographique signalé aux applications exécutées dans un émulateur en envoyant une position GPS à l'émulateur.

Vous pouvez exécuter l'une des commandes géographiques suivantes dès qu'un appareil virtuel est en cours d'exécution. L'émulateur définit l'emplacement que vous saisissez en créant un fournisseur de localisation fictif. Ce fournisseur répond aux écouteurs de localisation définis par les applications et fournit l'emplacement au LocationManager. Toute application peut interroger le gestionnaire de localisation pour obtenir la position GPS actuelle de l'appareil émulé en appelant LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity] : envoie une position GPS simple à l'émulateur. Indiquez la longitude et la latitude en degrés décimaux. Saisissez un nombre compris entre 1 et 12 pour définir le nombre de satellites à utiliser pour déterminer l'emplacement, et indiquez l'altitude en mètres et la vitesse en nœuds.

  • geo nmea sentence : envoie une phrase NMEA 0183 à l'appareil émulé, comme s'il s'agissait d'un modem GPS émulé. Commencez la phrase par "$GP". Seules les phrases "$GPGGA" et "$GPRCM" sont actuellement prises en charge. L'exemple suivant est une phrase GPGGA (Global Positioning System Fix Data) qui récupère les données de temps, d'emplacement et de position d'un récepteur 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
    

Événements matériels factices

Le sous-système d'événements matériels de la console de l'émulateur vous permet de simuler pratiquement n'importe quelle interaction physique avec l'appareil. Cela inclut les boutons physiques, les gestes/le toucher sur l'écran, les sélecteurs rotatifs, les entrées du joystick et les commutateurs matériels.

  • event types : liste tous les types d'événements factices. Pour les événements associés à des codes, le nombre de codes est indiqué entre parenthèses sur la droite. Exemple de résultat :

    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 ...] : envoie un ou plusieurs types d'événements factices.

  • type de codes d'événement : affiche la liste des codes d'événement pour le type d'événement factice spécifié.

  • event send type[:code]:[value] [...] : envoie un ou plusieurs événements factices avec des codes et des valeurs de code facultatifs.

EV_KEY : références des codes de touches

Le type d'événement EV_KEY permet de simuler l'appui sur un bouton et son relâchement. Les tableaux suivants divisent la longue liste des codes clés compatibles en catégories logiques. Pour chaque code de touche, l'envoi d'une valeur 1 simule une pression, tandis qu'une valeur 0 simule un relâchement. Une valeur de 2 représente la répétition d'une touche.

Sous-tableau A : touches système Android
Code Description
KEY_HOME Déclencheur du bouton d'accueil
KEY_BACK Déclencheur du bouton Retour
KEY_MENU Bouton de menu (à développer)
KEY_POWER Bouton Marche/Arrêt (appuyer/appuyer de manière prolongée)
KEY_VOLUMEUP Déclencheur du bouton "Augmenter le volume"
KEY_VOLUMEDOWN Déclencheur du bouton "Volume -"
KEY_CAMERA Bouton physique de l'obturateur de l'appareil photo
KEY_FOCUS Obturateur de mise au point automatique de l'appareil photo
KEY_SEARCH Déclencheur du bouton de recherche
KEY_SLEEP Déclencheur de la commande de mise en veille
KEY_WAKEUP Déclencheur de la commande de réveil
KEY_NOTIFICATION Ouvrir le volet des notifications
KEY_MUTE Couper la sortie audio du système
KEY_MICMUTE Couper le son du micro
KEY_BRIGHTNESSDOWN Diminuer la luminosité de l'écran
KEY_BRIGHTNESSUP Augmenter la luminosité de l'affichage
KEY_PHONE Ouvrir l'application de téléphone par défaut
KEY_SEND Envoyer un message ou passer un appel téléphonique
KEY_HEADSETHOOK Crochet du casque (répondre/raccrocher)
KEY_SCREEN Commande d'activation de l'économiseur d'écran
KEY_CONFIG Menu système de configuration
KEY_SWITCHVIDEOMODE Changer le mode vidéo du système
KEY_KBDILLUMTOGGLE Activer ou désactiver le rétroéclairage du clavier
Sous-tableau B : Commandes multimédias et de lecture
Code Description
KEY_PLAYPAUSE Lecture/Pause
KEY_PLAY Lancer la lecture d'un contenu multimédia
KEY_PAUSECD Mettre en pause la lecture du CD
KEY_STOPCD Arrêter la lecture du CD
KEY_NEXTSONG Passer au titre suivant
KEY_PREVIOUSSONG Passer au titre précédent
KEY_REWIND Revenir en arrière dans la version active
KEY_FASTFORWARD Avancer rapidement la piste active
KEY_RECORD Commande de déclenchement de l'enregistrement
KEY_SHUFFLE Activer/Désactiver la lecture aléatoire
KEY_REPEAT Activer/Désactiver la lecture en boucle
KEY_MEDIA Déclencheur de touche multimédia
Sous-tableau C : Claviers de navigation et généraux
Code Description
KEY_UP Direction "Haut" du pavé directionnel
KEY_DOWN Flèche vers le bas du pavé directionnel
KEY_LEFT Direction gauche du pavé directionnel
KEY_RIGHT Direction droite du pavé directionnel
KEY_PAGEUP Navigation vers le haut de la page
KEY_PAGEDOWN Navigation vers le bas de la page
KEY_INSERT Insérer un déclencheur de touche
KEY_DELETE Supprimer le déclencheur de touche
KEY_ENTER Déclencheur de touche Entrée
KEY_ESC Déclencheur de la touche Échap
KEY_TAB Déclencheur de la touche de tabulation
KEY_SPACE Déclencheur de la barre d'espace
KEY_BACKSPACE Déclencheur de la touche Retour arrière
KEY_CLEAR Vider le tampon d'entrée
KEY_CANCEL Annuler l'action en cours
KEY_OK Confirmer/OK la sélection
KEY_SELECT Sélectionner un déclencheur d'élément
KEY_GOTO Accéder à un lieu désigné
KEY_HELP Accéder à l'aide contextuelle
Sous-tableau D : Caractères alphanumériques et symboles du pavé numérique
  • Lettres standard de l'alphabet : de KEY_A à KEY_Z (26 codes).
  • Touches du clavier numérique : KEY_1 à KEY_0 (10 codes).
Code Symbole de caractère
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (pavé numérique)
KEY_KPPLUS + (pavé numérique)
KEY_KPMINUS - (pavé numérique)
KEY_KPDOT . (pavé numérique)
KEY_KPSLASH / (pavé numérique)
KEY_KPENTER Entrée (pavé numérique)
KEY_KPEQUAL = (pavé numérique)
KEY_KPCOMMA , (pavé numérique)
KEY_KPJPCOMMA , (mise en page japonaise)
KEY_KPLEFTPAREN ( (pavé numérique)
KEY_KPRIGHTPAREN ) (pavé numérique)
KEY_KPPLUSMINUS ± (pavé numérique)
Sous-tableau E : Touches de modification et de fonction
  • Touches de fonction standard : KEY_F1 à KEY_F24 (24 codes).
Code Description
KEY_LEFTSHIFT Touche de modification Maj gauche
KEY_RIGHTSHIFT Touche Maj de droite
KEY_LEFTCTRL Modificateur de clavier "Ctrl gauche"
KEY_RIGHTCTRL Touche de modification du clavier "Ctrl" de droite
KEY_LEFTALT Touche de modification Alt gauche
KEY_RIGHTALT Touche de modification Alt droite
KEY_LEFTMETA Touche Méta/Commande gauche
KEY_RIGHTMETA Touche Meta/Commande droite
KEY_CAPSLOCK Activer/Désactiver le verrouillage des majuscules
KEY_NUMLOCK Activation/désactivation de la touche Verr Num
KEY_SCROLLLOCK Activer/Désactiver le verrouillage du défilement
KEY_COMPOSE Assistant de caractères Compose
KEY_FN Touche FN du clavier physique
KEY_FN_ESC Combinaisons de touches de fonction
KEY_FN_1 Raccourci de fonction spéciale 1
KEY_FN_2 Raccourci de la fonction spéciale 2
KEY_FN_D Raccourci de fonction spéciale D
KEY_FN_E Raccourci de fonction spéciale E
KEY_FN_F Raccourci de fonction spéciale F
KEY_FN_S Raccourci de fonction spéciale S
KEY_FN_B Raccourci de fonction spéciale B
Sous-tableau F : Manettes de jeu et joysticks
Code Description
BTN_A / BTN_B / BTN_C Boutons A/B/C de la manette
BTN_X / BTN_Y / BTN_Z Boutons X/Y/Z de la face avant de la manette
BTN_START Bouton du menu "Démarrer" de la manette de jeu
BTN_SELECT Bouton de sélection de la manette de jeu
BTN_MODE Bouton du mode Contrôleur
BTN_TL/BTN_TR Gâchettes supérieures gauche / droite
BTN_TL2/BTN_TR2 Gâchettes analogiques gauche / droite
BTN_THUMBL/BTN_THUMBR Appui sur le joystick gauche / droit
BTN_DPAD_UP Déclencheur "Pavé directionnel haut" de la manette de jeu
BTN_DPAD_DOWN Déclencheur "Pavé directionnel bas" de la manette
BTN_DPAD_LEFT Gâchette gauche du pavé directionnel de la manette de jeu
BTN_DPAD_RIGHT Gâchette droite du pavé directionnel de la manette
BTN_THUMB Déclencheur principal du joystick
BTN_TOP/BTN_TOP2 Boutons supérieurs du joystick
BTN_PINKIE Boutons du joystick
De BTN_BASE à _BASE6 Boutons de la base de la plate-forme du joystick
BTN_DEAD Indicateur de zone morte de la manette de jeu inactive
BTN_TRIGGER Gâchette manuelle du joystick physique
BTN_JOYSTICK Code d'entrée générique du joystick
Sous-tableau G : Saisies à la souris, tactiles et au stylet
Code Description
BTN_MOUSE Événement générique de pointeur de la souris
BTN_LEFT Cliquer sur le bouton gauche de la souris
BTN_RIGHT Cliquer sur le bouton droit de la souris
BTN_MIDDLE Clic sur la molette centrale
BTN_SIDE Déclencheur de touche latérale de navigation
BTN_EXTRA Déclencheur de bouton de souris supplémentaire
BTN_FORWARD Clic sur le bouton "Suivant" du navigateur
BTN_BACK Clic sur le bouton de navigation "Retour" du navigateur
BTN_TASK Touche de l'outil de sélection des tâches système
BTN_TOUCH Contact physique avec l'écran détecté
BTN_STYLUS Proximité du stylet actif
BTN_STYLUS2 Bouton secondaire sur le stylet
BTN_TOOL_PEN Identifiant de l'outil Stylet
BTN_TOOL_RUBBER Identifiant de l'outil gomme du stylet
BTN_TOOL_BRUSH Identifiant de l'outil Pinceau de Painter
BTN_TOOL_PENCIL Identifiant de l'outil Crayon
BTN_TOOL_AIRBRUSH Identifiant de l'outil de peinture aérographe
BTN_TOOL_FINGER Contact du doigt avec l'écran tactile
BTN_TOOL_MOUSE Identifiant de l'outil de souris externe
BTN_TOOL_LENS Outil de loupe optique
BTN_TOOL_DOUBLETAP Indicateur de vitesse de double-tapotement par geste
BTN_TOOL_TRIPLETAP Indicateur de vitesse du geste Appuyer trois fois
Sous-tableau H : Raccourcis d'application
Code Action cible
KEY_WWW Lance le navigateur Web par défaut
KEY_MAIL Ouvre le client de messagerie par défaut
KEY_BOOKMARKS Ouvre la liste des favoris du navigateur
KEY_CALC Ouvre l'utilitaire de calculatrice
KEY_FILE Ouvre l'explorateur de fichiers local
KEY_EDIT Déclencheur de modification de document
KEY_NEW Déclencheur "Créer un document"
KEY_OPEN Déclencheur d'ouverture de document
KEY_SAVE Déclencheur de tâche d'enregistrement de fichier
KEY_CLOSE Déclencheur de tâche de fermeture de fichier
KEY_PRINT Déclencheur de tâche d'impression de fichier
KEY_COPY Action de copie du tampon du presse-papiers
KEY_PASTE Action d'insertion du contenu du presse-papiers
KEY_CUT Action de couper le contenu du presse-papiers
KEY_UNDO Annuler l'action du presse-papiers
KEY_REDO Répéter l'action du presse-papiers
KEY_CANCEL Déclencheur du processus d'annulation de Buffer
KEY_FIND Utilitaire de recherche de documents
KEY_REFRESH Utilitaire d'actualisation des documents
KEY_EXIT Utilitaire de fermeture des documents
KEY_DOCUMENTS Lance le portail des documents système
KEY_HOMEPAGE Lance le navigateur de la page d'accueil
KEY_FAVORITES Ouvre le portail des favoris du navigateur
KEY_CHAT Lance la messagerie instantanée
KEY_EMAIL Déclencheur de lancement d'adresse e-mail secondaire
KEY_FINANCE Ouvrir l'utilitaire de stock/finance
KEY_SPORT Ouvrir l'utilitaire de suivi des sports
KEY_SHOP Ouvrir le portail d'achat numérique
KEY_PLAYER Ouvrir le lecteur multimédia principal
KEY_MP3 Ouvrir le lecteur MP3 principal
KEY_TEXT Ouvrir l'éditeur de texte par défaut
KEY_LIST Ouvrir l'utilitaire de checklist
KEY_MEMO Ouvrir l'utilitaire de bloc-notes / mémo
KEY_CALENDAR Ouvre le portail de l'agenda
KEY_DIRECTORY Ouvre le répertoire d'adresses système
KEY_COMPUTER Ouvre l'explorateur de spécifications
KEY_TV/KEY_TV2 Lancement du portail TV
KEY_RADIO Lance l'utilitaire radio
KEY_CD/KEY_DVD Active le lecteur de disque optique
KEY_AUDIO/KEY_VIDEO Accéder aux spécifications média
KEY_TUNER Configure les récepteurs/tuner
KEY_SAT/KEY_SAT2 Configure les flux satellites
KEY_TAPE Lire un deck de bandes
KEY_VCR Lire le flux du lecteur VCR
KEY_VCR2 Lire le flux du lecteur VCR 2
KEY_AUX Entrées de port média auxiliaires
KEY_SETUP Menu de configuration
De KEY_PROG1 à _PROG4 Clés de programme définies par l'utilisateur
KEY_ZOOM Activer/Désactiver le zoom de la fenêtre d'affichage
KEY_MODE Sélection du mode de fenêtre d'affichage
KEY_KEYBOARD Afficher/Masquer le clavier virtuel
KEY_LANGUAGE Changer la langue de la piste audio
KEY_TITLE Ouvrir les options du titre du contenu multimédia
KEY_SUBTITLE Interface d'activation/désactivation des sous-titres
KEY_ANGLE Changer l'angle de la caméra vidéo
KEY_EPG Ouvrir le guide électronique des programmes
KEY_PVR Ouvrir l'enregistreur vidéo personnel
KEY_MHP Ouvrir la plate-forme multimédia de la maison
KEY_CHANNEL Ouvrir les chaînes du tuner TV
KEY_CHANNELUP Régler la chaîne TV vers le haut
KEY_CHANNELDOWN Descendre d'une chaîne TV
KEY_RED Bouton interactif rouge
KEY_GREEN Bouton interactif vert
KEY_YELLOW Bouton interactif jaune
KEY_BLUE Bouton interactif bleu
KEY_FIRST Sélectionner la première option d'article
KEY_LAST Sélectionner l'option "Dernier élément"
KEY_NEXT Sélectionner l'option "Piste suivante"
KEY_PREVIOUS Sélectionner l'option de piste précédente
KEY_RESTART Redémarrer la boucle de la piste multimédia
KEY_SLOW Option de lecture au ralenti
KEY_AB Boucle de répétition A-B
KEY_PLAYCD Commande de lecture du lecteur CD
KEY_PAUSECD Commande de pause du lecteur CD
KEY_STOPCD Commande d'arrêt du lecteur CD
KEY_DIGITS Commande de saisie au clavier numérique
KEY_TEEN Option "Valeurs pour les adolescents" du clavier
KEY_TWEN Option de valeurs twen du clavier
KEY_DEL_EOL Supprimer jusqu'à la fin de la ligne
KEY_DEL_EOS Supprimer jusqu'à la fin de la mémoire tampon de l'écran
KEY_INS_LINE Insérer un tampon de nouvelle ligne
De KEY_BRL_DOT1 à _DOT8 Saisie avec les boutons de la plage braille
KEY_VOICECOMMAND Lance l'application d'assistance vocale
KEY_SELECTIVE_SCREEN Déclenche la capture d'écran régionale
KEY_BATTERY Interroge les notifications de batterie
KEY_STAR/KEY_SHARP Symboles du clavier téléphonique
KEY_PLUS Symbole plus sur un clavier téléphonique
KEY_INFO Afficher la superposition du panneau d'informations
KEY_TIME Afficher l'heure actuelle
KEY_VENDOR Demander les spécifications du fournisseur
KEY_ARCHIVE Ouvre l'utilitaire d'archivage local
KEY_PROGRAM Configurer les paramètres du programme
KEY_POWER2 Déclenche l'alimentation de secours

EV_ABS : événements de mouvement absolu

Le type d'événement EV_ABS est essentiel pour simuler des gestes précis (tapotements, glissements, pincements multitouch) et des ajustements avec un joystick. Les coordonnées absolues ci-dessous correspondent directement à la résolution physique de l'écran sous-jacent.

Code Plage de coordonnées Description
ABS_MT_TRACKING_ID -1 ou ≥0 ID de suivi ; -1 met fin au contact
ABS_MT_POSITION_X De 0 à 1767 Coordonnée X (Pixel Fold)
ABS_MT_POSITION_Y De 0 à 2207 Coordonnée Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR pixels Largeur du grand axe de la zone tactile
ABS_MT_TOUCH_MINOR pixels Largeur de l'axe mineur de la zone tactile
ABS_MT_WIDTH_MAJOR pixels Largeur de l'axe principal de l'outil
ABS_MT_WIDTH_MINOR pixels Largeur du petit axe de l'outil
ABS_MT_ORIENTATION De 0 à 255 Angle d'orientation du contact
ABS_MT_PRESSURE De 0 à 255 Grandeur de la force de contact
ABS_MT_DISTANCE mm Distance de survol par rapport à l'écran
ABS_MT_TOOL_TYPE De 0 à 2 0=doigt, 1=stylet, 2=crayon
ABS_MT_BLOB_ID entier Identifiant du blob de contact
ABS_MT_TOOL_X pixels Coordonnée de position X de l'outil
ABS_MT_TOOL_Y pixels Coordonnée de la position Y de l'outil
ABS_MT_SLOT De 0 à N Emplacement actif (protocole B)
ABS_X / _Y / _Z analogique Axes de coordonnées du joystick
ABS_RX / _RY / _RZ analogique Axes de rotation du joystick
ABS_THROTTLE/_BRAKE analogique Pédales et commandes de direction
ABS_HAT0X/_HAT0Y -1 / 0 / 1 Chapeau du pavé directionnel et commutateurs de point de vue
ABS_PRESSURE De 0 à 255 Niveau de pression du stylet / pointeur
ABS_DISTANCE mm Distance de survol (stylet)
ABS_TILT_X/_TILT_Y degrés Angles d'inclinaison du stylet
ABS_VOLUME analogique Niveaux de volume de la manette

L'interaction tactile Android est basée sur les protocoles multitouch (MT). Les émulateurs modernes implémentent à la fois le protocole A (sans état, en envoyant des paquets de contacts séparés par des marques de synchronisation) et le protocole B (avec état, en attribuant des contacts à des emplacements de suivi dédiés). Le protocole B permet de suivre efficacement plusieurs contacts simultanés pour les gestes tels que le pincement pour zoomer.

EV_REL et EV_SW : mouvement et commutateurs matériels

La catégorie d'événements EV_REL gère les modifications relatives du pointeur ou des coordonnées, ce qui est principalement utilisé pour émuler les mouvements de la souris externe ou les molettes de défilement. La catégorie d'événements EV_SW gère les commutateurs d'appareils physiques, par exemple si un téléphone pliable ou une tablette sont pliés, ou si un matériel audio externe est inséré.

Code Valeurs Description
REL_X Delta Déplacement horizontal du curseur
REL_Y Delta Déplacement vertical du curseur
SW_LID 0/1 État du couvercle de l'ordinateur portable (0=ouvert, 1=fermé)
SW_TABLET_MODE 0/1 État du mode Tablette (0=désactivé, 1=activé)
SW_HEADPHONE_INSERT 0/1 État du connecteur casque (0=débranché, 1=branché)
SW_MICROPHONE_INSERT 0/1 État du connecteur micro (0=désactivée, 1=activée)
Syntaxe de répartition des commandes

Pour envoyer ces codes, mettez en forme la commande de la console avec les types, les codes et les valeurs séparés par des deux-points. Vous pouvez mettre en file d'attente plusieurs modifications de coordonnées dans une seule chaîne. Il est essentiel d'toujours ajouter une marque de synchronisation finale (EV_SYN:0:0) pour indiquer que le framework de l'émulateur doit regrouper et traiter ces entrées ensemble.

Exemples de script d'événement et de geste

Étant donné que Telnet permet d'envoyer des paramètres en plusieurs parties, vous pouvez simuler des séquences de gestes physiques réalistes. Vous trouverez ci-dessous les structures de script d'événement brut permettant d'automatiser les gestes depuis la console hôte.

Simuler un appui sur l'écran

Pour effectuer un appui sur un écran propre à une coordonnée cible, attribuez un ID de suivi, spécifiez les coordonnées X et Y sur l'écran, simulez le contact tactile, synchronisez, puis relâchez.

# 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
Simuler un défilement vertical (balayage)

Pour exécuter un geste de balayage, maintenez le contact aux coordonnées de départ, envoyez des frames de coordonnées de mouvement intermédiaires et relâchez à la fin.

# 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
Simuler un geste de zoom par pincement

Pour déclencher un zoom à deux doigts, utilisez les emplacements MT actifs (0 et 1) pour suivre et coordonner deux coordonnées tactiles simultanées qui s'éloignent l'une de l'autre.

# 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
Simuler un changement de connexion du casque

Simulez l'insertion ou le retrait d'un connecteur casque pour tester les commutateurs de routage audio. Une valeur 1 représente l'insertion d'une prise et 0 le retrait d'un casque.

# 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
Découvrir les codes d'événements de la console à partir d'un appareil réel

Pour connaître la séquence de syntaxe d'événement exacte pour toute action personnalisée ou geste de bouton, connectez-vous via adb shell et exécutez l'utilitaire de diagnostic getevent. Lorsque vous interagissez avec l'interface utilisateur de l'émulateur, la console affiche les codes, les types et les positions exacts des événements.

# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
  • event text message : envoie une chaîne de caractères simulant des pressions de touche. Le message doit être une chaîne UTF-8. Les posts Unicode sont mappés à l'envers selon le clavier de l'appareil actuel, et les caractères non pris en charge sont supprimés de manière silencieuse.

Commandes d'état de l'alimentation

  • Affichage de l'alimentation : affiche l'état de la batterie et du chargeur.

  • power ac {on| off} : définit l'état de charge sur secteur sur "on" (activé) ou "off" (désactivé).

  • power status {unknown| charging| discharging| not-charging| full} : modifie l'état de la batterie comme indiqué.

  • power present {true| false} : définit l'état de présence de la batterie.

  • power health {unknown| good| overheat| dead| overvoltage| failure} : définit l'état de la batterie.

  • power capacity percent : définit l'état de la capacité de la batterie restante en tant que pourcentage compris entre 0 et 100.

État de la connexion réseau (Ethernet et réseau mobile uniquement)

  • network status : vérifie l'état du réseau ainsi que les caractéristiques de retard et de débit actuelles.

  • network delay latency Modifie la latence du réseau émulé.

    L'émulateur vous permet de simuler différents niveaux de latence réseau afin que vous puissiez tester votre application dans un environnement plus représentatif des conditions réelles de son exécution. Vous pouvez définir un niveau ou une plage de latence au démarrage de l'émulateur, ou utiliser la console pour modifier la latence pendant que l'application s'exécute dans l'émulateur.

    Le format de la latence réseau est l'un des suivants (les nombres sont exprimés en millisecondes) :

    Format de latence réseau :

  • gprs : GPRS, qui utilise une plage de latence de 150 au minimum et de 550 au maximum.

  • edge : EDGE/EGPRS, qui utilise une plage de latence de 80 au minimum et de 400 au maximum.

  • umts : UMTS/3G, qui utilise une plage de latence de 35 au minimum et de 200 au maximum.

  • none : aucune latence.

  • num : émule la latence spécifiée en millisecondes.

  • min:max : émule la plage de latence spécifiée.

    Pour définir la latence au démarrage de l'émulateur, utilisez l'option d'émulateur -netdelay avec une valeur de latence acceptée. Exemples :

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Pour modifier le retard réseau pendant que l'émulateur s'exécute, connectez-vous à la console et utilisez la commande network delay :

    network delay gprs
    network delay 40 100
    
  • network speed speed L'émulateur vous permet de simuler différents taux de transfert réseau. Vous pouvez définir un taux ou une plage de transfert au démarrage de l'émulateur, ou utiliser la console pour modifier ce taux pendant que l'application s'exécute dans l'émulateur.

    Le format de la vitesse du réseau est l'un des suivants (les nombres sont exprimés en kbit/s) :

    Format de débit réseau :

  • gsm : GSM/CSD, qui utilise un débit montant de 14,4 et un débit descendant de 14,4.

  • hscsd : HSCSD, qui utilise un débit montant de 14,4 et un débit descendant de 43,2.

  • gprs : GPRS, qui utilise un débit montant de 40,0 et un débit descendant de 80,0.

  • edge : EDGE/EGPRS, qui utilise un débit montant de 118,4 et un débit descendant de 236,8.

  • umts : UMTS/3G, qui utilise un débit montant de 128,0 et un débit descendant de 1 920.

  • hsdpa : HSDPA, qui utilise un débit montant de 348,0 et un débit descendant de 14 400,0.

  • lte : LTE, qui utilise un débit montant de 58 000 et un débit descendant de 173 000.

  • evdo : EvDo, qui utilise un débit montant de 75 000 et un débit descendant de 280 000.

  • full : débit illimité, mais qui dépend de la vitesse de connexion de votre ordinateur.

  • num : définit un débit exact en kbit/s pour le chargement et le téléchargement.

  • up:down : définit des débits exacts en kbit/s pour le chargement et le téléchargement séparément.

    Pour définir le débit réseau au démarrage de l'émulateur, utilisez l'option d'émulateur -netspeed. Exemples :

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

    Pour modifier le débit réseau pendant que l'émulateur s'exécute, connectez-vous à la console et utilisez la commande network speed :

    network speed 14.4 80
    
  • network capture {start| stop} file Envoie des paquets à un fichier. La liste suivante décrit les paramètres et leurs valeurs :

    Remarque : À partir de l'émulateur Android 36.5, le trafic de connexion Wi-Fi est géré par netsim par défaut. La commande de console de capture réseau ne capture que l'ancien trafic cellulaire/WAN acheminé via la pile slirp QEMU. Pour capturer des paquets Wi-Fi, Bluetooth ou réseau avancé dans les versions modernes de l'émulateur, consultez Capturer le trafic réseau dans le guide sur la mise en réseau avancée de l'émulateur.

  • start file : démarre la capture des paquets réseau. Pour des raisons de sécurité, le fichier doit être un nom de fichier brut (sans séparateurs de chemin d'accès tels que / et sans ..). Le fichier de capture de paquets sera enregistré dans le répertoire de contenu de votre AVD, dans le dossier console_out/ (par exemple, ~/.android/avd/avd_name.avd/console_out/file).

  • stop file : arrête d'envoyer des paquets au fichier spécifié.

Émulation de téléphonie

Android Emulator inclut ses propres modems émulés GSM et CDMA qui vous permettent de simuler des fonctions de téléphonie dans l'émulateur. Par exemple, GSM vous permet de simuler des appels téléphoniques entrants, ainsi que d'établir et d'arrêter des connexions de données. Avec CDMA, vous fournissez une source d'abonnement et la liste d'itinérance préférée. Le système Android gère les appels simulés exactement comme les appels réels. L'émulateur n'est pas compatible avec l'audio des appels.

  • gsm {call| accept| cancel| busy} phonenumber Voici les paramètres GSM :

    • call : simule un appel téléphonique entrant depuis un numéro de téléphone.
    • accept : accepte un appel entrant de phonenumber et fait passer l'état de l'appel à actif. Vous ne pouvez définir l'état d'un appel sur "actif" que si son état actuel est "en attente" ou "en pause".
    • cancel : met fin à un appel téléphonique entrant ou sortant vers un numéro de téléphone.
    • busy : clôture un appel sortant vers un numéro de téléphone et définit l'état de l'appel sur "busy" (occupé). Vous ne pouvez définir l'état d'un appel sur "Occupé" que si son état actuel est "En attente".
  • gsm {data| voice} state La commande d'état des données modifie l'état de la connexion de données GPRS, tandis que la commande d'état vocal modifie l'état de la connexion vocale GPRS, comme suit :

    • Non enregistré : aucun réseau n'est disponible.
    • home : sur un réseau local, sans itinérance.
    • roaming : sur un réseau en itinérance.
    • searching : recherche de réseaux.
    • Refusé : appels d'urgence uniquement.
    • off : identique à "non enregistré".
    • on : identique à "home".
  • gsm hold : définit l'état d'un appel sur "En attente". Vous ne pouvez définir l'état d'un appel sur "En attente" que si son état actuel est "Actif" ou "En attente".

  • gsm list : affiche la liste de tous les appels entrants et sortants, ainsi que leur état.

  • gsm status : affiche l'état actuel de la connexion vocale/de données GSM. Les valeurs sont celles décrites pour les commandes vocales et de données.

  • gsm signal {rssi| ber} Modifie l'intensité du signal (rssi) et le taux d'erreur par bit (ber) enregistrés au cours des 15 prochaines secondes de mise à jour. La liste suivante décrit les paramètres et leurs valeurs :

    • rssi : la plage est comprise entre 0 et 31. 99 correspond aux valeurs inconnues.
    • ber : la plage est comprise entre 0 et 7. 99 correspond aux valeurs inconnues.
  • gsm signal-profile num : définit le profil d'intensité du signal. num est un nombre compris entre 0 et 4.

  • cdma ssource source Définit la source d'abonnement CDMA actuelle, où la source est une liste d'autorisation basée sur le réseau qui contient les abonnés de l'opérateur CDMA et leurs valeurs, comme suit :

    • nv : lit l'abonnement à partir d'une RAM non volatile.
    • ruim : lit l'abonnement à partir d'un module d'identité d'utilisateur amovible (RUIM).
  • cdma prl_version version : vide la version actuelle de la liste d'itinérance préférée (PRL). Le numéro de version correspond à la base de données PRL qui contient les informations utilisées lors du processus de sélection et d'acquisition du système.

Gestion des capteurs sur l'émulateur

Ces commandes concernent les capteurs disponibles dans l'appareil virtuel Android. En plus d'utiliser la commande du capteur, vous pouvez afficher et ajuster les paramètres dans l'émulateur sur l'écran "Capteurs virtuels" des onglets "Accéléromètre" et "Capteurs supplémentaires".

  • sensor status : liste tous les capteurs et leur état.

  • sensor get sensor-name : obtient les paramètres de sensor-name. L'exemple suivant obtient la valeur du capteur d'accélération :

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

    Les valeurs d'accélération séparées par des caractères deux-points(:) font référence aux coordonnées x, y et z des capteurs virtuels.

  • sensor set sensor-name value-x:value-y:value-z : définit les valeurs pour sensor-name. L'exemple suivant définit le capteur d'accélération sur les valeurs x, y et z, séparées par des caractères deux-points.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Émulation de SMS

  • sms send sender-phone-number textmessage Génère un SMS entrant émulé. La liste suivante décrit les paramètres et leurs valeurs :

    • sender-phone-number : contient une chaîne numérique arbitraire.
    • textmessage : message SMS.

    Dans l'exemple suivant, le message "hi there" est envoyé au numéro de téléphone 4085555555 :

    sms send 4085555555 hi there
    

La console transfère le SMS au framework Android, qui le transmet à une application de l'émulateur qui gère les SMS, comme l'application Messages. Si vous transmettez 10 chiffres, l'application en fait un numéro de téléphone. Les chaînes numériques plus longues ou plus courtes indiquent la manière dont vous les avez envoyées.

Simulation d'empreintes digitales

  • finger touch fingerprint-id : simule la pression d'un doigt sur le capteur.

  • finger remove : simule le retrait du doigt.

Pour découvrir comment utiliser ces commandes, consultez la section suivante sur la simulation et la validation d'empreintes digitales.

Enregistr. écran

La commande d'enregistrement d'écran permet de capturer des fichiers vidéo de haute qualité de l'écran physique de l'émulateur directement depuis le système hôte. Cela est très utile pour les pipelines d'intégration continue et les rapports de bugs automatisés.

  • screenrecord {start| stop} file Démarre ou arrête le processus d'enregistrement de l'écran.
    • start file : démarre l'enregistrement vidéo. Le fichier de sortie doit se terminer par l'extension obligatoire .webm. La vidéo enregistrée est enregistrée directement dans le répertoire de sortie de la console de votre AVD : ~/.android/avd/avd_name.avd/console_out/file.
    • stop file : arrête le processus d'enregistrement de l'écran actif.

Automatisation et macros

Le sous-système d'automatisation permet aux développeurs d'enregistrer les transitions d'état des macros sur l'appareil virtuel en cours d'exécution et de les relire pour exécuter des flux de tests automatisés.

  • automation {record| stop-record| play| stop-play} Gère les enregistrements de macros automatiques.
    • record : commence à enregistrer les changements d'état et les entrées de l'appareil.
    • stop-record : arrête la session d'enregistrement de macro en cours.
    • play : lance la lecture d'une séquence de macro enregistrée.
    • stop-play : interrompt la séquence de lecture de la macro active.

Physique (6 DOF)

Les commandes physiques gèrent la journalisation des poses spatiales de vérité terrain pour les modèles de mouvement physique à six degrés de liberté (6DoF), qui sont utilisés pour simuler le suivi du mouvement avancé.

  • physics {record-gt| stop} Gère les enregistrements du modèle de pose physique.
    • record-gt : commence à enregistrer les données de mouvement 6 DoF de la vérité terrain.
    • stop : arrête le processus d'enregistrement de la vérité de terrain en cours.

Commandes de contrôle des appareils avancées

Cette section regroupe les points de terminaison des commandes de la console hautement spécialisés pour les configurations d'émulation avancées, y compris les proxys réseau, les configurations multi-écrans, les remplacements de rendu et le débogage direct de l'hyperviseur.

  • multidisplay {add| del} Ajoute ou supprime des écrans virtuels secondaires pour tester les configurations multi-écrans. Remarque : Les écrans secondaires ne sont pas compatibles avec les profils pliables tels que le Pixel Fold ou l'émulateur redimensionnable.

  • proxy {set| clear} Configure le transfert de proxy réseau de manière programmatique à partir de la console.

    • set host port : configure les paramètres proxy cible.
    • clear : rétablit les configurations de proxy par défaut. Remarque : Les opérations de définition de proxy échouent dans les environnements d'exécution sans interface graphique.
  • virtualscene-image {wall| table} image_path Personnalise les murs d'arrière-plan ou les tables horizontales affichés dans le flux de la caméra de la scène virtuelle avec un fichier image utilisateur personnalisé.

  • resize-display scale Ajuste dynamiquement la résolution de l'écran entre les échelles prédéfinies. Remarque : Les ajustements de résolution ne sont pas compatibles avec les configurations sans interface graphique.

  • nodraw {on| off} Désactive le rendu de l'interface utilisateur physique sur l'écran hôte pour réduire la mémoire système et la charge du GPU lors des exécutions d'automatisation sans affichage en arrière-plan à volume élevé.

  • grpc port Configure le contrôle avancé des appareils par programmation sur des points de terminaison de port gRPC personnalisés.

  • qemu monitor Fournit un accès direct au terminal interactif de la console de l'hyperviseur sous-jacent. Cette commande ne peut être saisie que lors de sessions de console Telnet actives.

  • icebox track pid Active les instantanés système automatiques lorsque le processus de l'application spécifiée rencontre une exception non gérée ou un plantage.

  • phonenumber number Définit le numéro de téléphone local virtuel de l'appareil cible.

Interface programmatique gRPC

Les versions modernes de l'émulateur sont compatibles avec une puissante interface de programmation gRPC en plus de l'ancienne console Telnet. Bien que la console Telnet soit idéale pour les sessions interactives rapides ou les scripts simples, l'interface gRPC est conçue pour un contrôle automatisé hautes performances, sécurisé et robuste dans les environnements d'intégration continue (CI) et sans interface graphique. En proposant des points de terminaison de service directs, gRPC élimine la nécessité d'analyser les flux de texte, de gérer les échanges de sessions de terminal ou d'exposer les ports localhost non chiffrés.

Pour vous aider à choisir entre l'ancienne console Telnet et l'interface programmatique gRPC moderne, consultez la comparaison suivante des performances, de la sécurité et des fonctionnalités :

Fonctionnalité Console Telnet Interface gRPC
Recommandé pour Débogage manuel, sessions interactives. CI/CD sans interface graphique, plates-formes de tests automatisés lourdes.
Speed Plus lent : surcharge de texte, latence de connexion. HTTP/2 multiplexé et optimisé, proto rapide.
Sécurité Non chiffré ; ports locaux (5554 à 5585). Peut être sécurisé par TLS et fonctionne sur les réseaux.
Flux Non compatible ; requête/réponse uniquement. Flux pour logcat, capture audio de l'invité.
Multimédia Écrit les fichiers de sortie sur le disque hôte/invité. Tampons binaires directs sur le câble.
OS invité Limité aux commandes d'émulateur fixes. Exécute les commandes shell Bash de l'invité natif.

Lancer et appeler gRPC

Pour utiliser les points de terminaison gRPC, lancez l'Android Emulator à partir de la ligne de commande et incluez l'indicateur -grpc en spécifiant le port de bouclage cible.

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

Une fois l'émulateur en cours d'exécution avec le service gRPC activé, vous pouvez effectuer des appels RPC programmatiques. Pour les tests en ligne de commande, utilisez l'utilitaire grpcurl pour communiquer avec les services de l'émulateur. Toutes les requêtes sont mises en forme au format JSON et envoyées en texte brut.

# 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

Mappage de la console Telnet au service gRPC

Le tableau de référence suivant mappe les anciennes commandes de la console Telnet à leurs services et méthodes gRPC correspondants, et indique comment automatiser les interactions courantes avec les appareils virtuels de manière programmatique :

Catégorie Ancienne commande Telnet Service / Méthode gRPC
État ping EmulatorController/getStatus
État avd name incubating.AvdService/getAvdInfo
État kill EmulatorController/setVmState
État restart EmulatorController/setVmState
Alimentation power display EmulatorController/getBattery
Alimentation power capacity EmulatorController/setBattery
Géo-loc geo fix EmulatorController/setGps
Capteurs sensor set incubating.SensorService/setSensor
Biométrie finger touch EmulatorController/sendFingerprint
Posture posture EmulatorController/setPosture
Posture physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Appel GSM gsm call EmulatorController/sendPhone
Appel GSM phonenumber EmulatorController/setPhoneNumber
Redirection redir add Waterfall/ForwardPort
Entrée event send EV_KEY EmulatorController/sendKey
Entrée event send EV_ABS EmulatorController/sendTouch
Multimédia screenrecord incubating.ScreenRecording
Affichage nodraw EmulatorController/setDisplayMode
Instantanés avd snapshot list SnapshotService/ListSnapshots
Instantanés avd snapshot load/save SnapshotService/LoadSnapshot

Commandes programmatiques propres à gRPC

L'interface gRPC offre plusieurs fonctionnalités de pointe qu'il est physiquement impossible d'exécuter sur les anciennes connexions à la console Telnet. Cela inclut le streaming direct de logcat, la capture ou l'injection audio bidirectionnelle, les modifications de l'interface graphique de l'hôte et l'accès direct au shell.

Service / Méthode gRPC Paramètre Capacité
streamLogcat {"maxLines": 100} Diffuse les sorties logcat du système invité
streamAudio {} Diffuse le son de l'enceinte via le câble
injectAudio {"audio": "..."} Injecte des flux audio de micro
UiController {"theme": "DARK"} Modifie les thèmes de la fenêtre hôte
Waterfall/Exec {"cmd": "ls"} Exécute les commandes shell de l'OS invité natif

Simulation et validation d'empreintes digitales

Figure 1. Écran d'authentification par empreinte digitale.

Utilisez la commande finger pour simuler et valider l'authentification par empreinte digitale pour votre application. Vous devez utiliser SDK Tools 24.3 ou une version ultérieure et Android 6.0 (niveau d'API 23) ou une version ultérieure.

Pour simuler et valider l'authentification par empreinte digitale, procédez comme suit :

  1. Si vous n'avez pas encore d'ID d'empreinte, enregistrez une nouvelle empreinte dans l'émulateur en sélectionnant Settings > Security > Fingerprint (Paramètres > Sécurité > Empreinte digitale), puis en suivant les instructions d'enregistrement.

  2. Configurez votre application pour qu'elle accepte l'authentification par empreinte digitale. Une fois cette étape effectuée, votre appareil affiche l'écran d'authentification par empreinte digitale.

  3. Pendant que votre application affiche l'écran d'authentification par empreinte digitale, accédez à la console et entrez la commande finger touch ainsi que l'ID d'empreinte que vous avez créé. Cela simule un geste avec le doigt.

  4. Entrez ensuite la commande finger remove pour simuler le retrait d'un doigt. Votre application doit réagir comme si un utilisateur touchait le lecteur d'empreinte digitale, puis en retirait son doigt.