Cómo enviar comandos de la consola del emulador

Cada dispositivo virtual en ejecución cuenta con una consola que te permite consultar y controlar el entorno del dispositivo emulado. Por ejemplo, puedes usar la consola para administrar el redireccionamiento de puertos, las características de red y los eventos de telefonía mientras tu app se ejecuta en el emulador.

Para usar los siguientes comandos, es necesario tener un emulador en ejecución. Si deseas obtener más información para ejecutar un emulador, consulta Cómo ejecutar apps en Android Emulator y Cómo iniciar el emulador desde la línea de comandos.

Cómo iniciar y detener una sesión de la consola

Si quieres acceder a la consola y escribir comandos, desde una ventana de terminal, usa telnet para conectarte al puerto de consola y proporciona tu token de autenticación. Cada vez que la consola muestre OK, estará lista para aceptar comandos. No hay un mensaje típico.

Para conectarte a la consola de un dispositivo virtual en ejecución:

  1. Abre una ventana de terminal e ingresa el siguiente comando:

    telnet localhost console-port
    

    El título de la ventana del emulador muestra el número de puerto de la consola cuando se ejecuta en una ventana por separado, pero no cuando se ejecuta en una ventana de herramientas. Por ejemplo, el título de la ventana para un emulador que usa el puerto de consola 5554 podría ser Pixel8_API_34:5554. Además, el comando adb devices imprime una lista de dispositivos virtuales en ejecución y sus números de puerto de consola. Para obtener más información, consulta Cómo realizar consultas de dispositivos.

    Nota: El emulador detecta las conexiones en los puertos 5554 a 5585 y solo acepta conexiones de localhost.

  2. Después de que la consola muestre OK, ingresa el comando auth auth_token.

    Antes de que puedas ingresar comandos de consola, la consola del emulador requiere autenticación. auth_token debe coincidir con el contenido del archivo .emulator_console_auth_token en tu directorio principal.

    Si ese archivo no existe, el comando telnet localhost console-port crea el archivo, que contiene un token de autenticación generado de forma aleatoria. Para inhabilitar la autenticación, borra el token del archivo .emulator_console_auth_token o crea un archivo vacío si no existe.

  3. Después de conectarte a la consola, ingresa comandos de consola.

    Ingresa help, help command o help-verbose para ver una lista de comandos de la consola y obtener información sobre comandos específicos.

  4. Para salir de la sesión de la consola, ingresa quit o exit.

La siguiente es una sesión de ejemplo:

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

Comandos de enviar y olvidar

Si no necesitas que la sesión esté abierta, usa el acceso directo adb emu, que ejecuta el comando y devuelve de inmediato el control a la shell de invocación:

adb emu command commandParameter

La invocación con adb emu se conecta al emulador disponible. Si tienes varios emuladores en ejecución al mismo tiempo, debes pasar el número de serie del emulador específico al que te orientas:

adb -s emulator-serial emu command commandParameter

Referencia de comandos del emulador

En las siguientes listas, se describen los comandos de la consola del emulador con sus parámetros y valores:

Comandos generales

  • avd {stop| start| status| name} Consulta, controla y administra el dispositivo virtual de la siguiente manera:

    • stop: Detiene la ejecución del dispositivo.
    • start: Inicia la ejecución del dispositivo.
    • status: Consulta el estado del dispositivo virtual, que puede ser running o stopped.
    • name: Consulta el nombre del dispositivo virtual.
  • avd snapshot {list| save name| load name| delete name} Guarda y restablece el estado del dispositivo en las instantáneas como se indica a continuación:

    • list: Enumera todas las instantáneas guardadas.
    • save name: Guarda la instantánea con el nombre especificado.
    • load name: Carga la instantánea con nombre.
    • delete name: Borra la instantánea con nombre.

    En el siguiente ejemplo, se guarda una instantánea con el nombre firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: Pliega el dispositivo para mostrar la configuración de pantalla más pequeña (si el dispositivo es plegable y está desplegado).

  • unfold: Despliega el dispositivo para mostrar la configuración de pantalla más grande (si el dispositivo es plegable y está plegado).

  • kill: Finaliza el dispositivo virtual.

  • ping: Comprueba si se está ejecutando el dispositivo virtual.

  • rotate: Gira el AVD en sentido antihorario en incrementos de 45 grados.

Falla del emulador

  • crash: Hace que el emulador falle durante la ejecución de la app.

  • crash-on-exit: Hace que el emulador falle al salir de la app.

Etiquetas de depuración

  • debug tags ...: Habilita o inhabilita los mensajes de depuración de partes específicas del emulador. El parámetro tags debe ser un valor de la lista de etiquetas de depuración que aparece cuando ejecutas emulator -help-debug-tags. Para obtener más información sobre la opción -help-debug-tags, consulta la tabla de opciones de uso general. En el siguiente ejemplo, se habilita la etiqueta de radio:

    debug radio
    

Redirección de puerto

  • redir list: Enumera el redireccionamiento del puerto actual.

  • redir add protocol:host-port:guest-port Agrega un nuevo redireccionamiento de puertos como se indica a continuación:

    • protocol: Debe ser tcp o udp.
    • host-port: Es el número de puerto para abrir en el host.
    • guest-port: Es el número de puerto al que se deben enrutar los datos en el emulador.
  • redir del protocol:host-port Borra un redireccionamiento del puerto.

    • protocol: Debe ser tcp o udp.
    • host-port: Es el número de puerto para abrir en el host.

Ubicación geográfica

Establece la ubicación geográfica informada en las apps que se ejecutan dentro de un emulador enviando datos del GPS al emulador.

Puedes emitir uno de los siguientes comandos de ubicación geográfica tan pronto como se ejecute un dispositivo virtual. El emulador establece la ubicación que ingresas y crea un proveedor de ubicación ficticia. Este proveedor responde a los objetos de escucha de ubicación establecidos por las apps y proporciona la ubicación al LocationManager. Cualquier app puede realizar una consulta al administrador de ubicaciones con el objetivo de obtener los datos del GPS para el dispositivo emulado llamando a LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: Envía una vez datos del GPS al emulador. Especifica la longitud y la latitud en grados decimales. Usa un número del 1 al 12 para especificar la cantidad de satélites que se usarán para determinar la posición y especifica la altitud en metros y la velocidad en nudos.

  • geo nmea sentence: Envía una frase de NMEA 0183 al dispositivo emulado, como si se hubiera enviado desde un módem de GPS emulado. Comienza la oración con '$GP'. Por el momento, solo se admiten las frases '$GPGGA' y '$GPRCM'. En el siguiente ejemplo, se incluye una frase de GPGGA (datos fijos de sistema de posicionamiento global) que obtiene los datos de hora, posición y corrección de un receptor de 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
    

Eventos de hardware falsos

El subsistema de eventos de hardware de la consola del emulador te permite simular prácticamente cualquier interacción física con el dispositivo. Esto incluye botones físicos, gestos o toques en la pantalla, diales giratorios, entradas de joystick y conmutadores de hardware.

  • event types: Enumera todos los tipos de eventos falsos. Para los eventos que tienen códigos, la cantidad de códigos se detalla entre paréntesis a la derecha. Resultado de ejemplo:

    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 ...]: Envía uno o más tipos de eventos falsos.

  • event codes type: Detalla los códigos de evento para el tipo de evento falso especificado.

  • event send type[:code]:[value] [...]: Envía uno o más eventos falsos con códigos y valores de código opcionales.

EV_KEY: Referencias de códigos de teclas

El tipo de evento EV_KEY se usa para simular que se presionan y se sueltan botones. En las siguientes tablas, se divide la amplia lista de códigos de teclas admitidos en categorías lógicas. Para cada código de tecla, enviar un valor de 1 simula una presión, mientras que un valor de 0 simula una liberación. Un valor de 2 representa la repetición de la tecla.

Tabla secundaria A: Claves del sistema Android
Código Descripción
KEY_HOME Activación con el botón de inicio
KEY_BACK Activador del botón Atrás
KEY_MENU Botón de menú (ampliado)
KEY_POWER Botón de encendido (presionar/mantener presionado)
KEY_VOLUMEUP Activador del botón para subir el volumen
KEY_VOLUMEDOWN Activador del botón para bajar el volumen
KEY_CAMERA Botón físico del obturador de la cámara
KEY_FOCUS Obturador de enfoque automático de la cámara
KEY_SEARCH Activador del botón de búsqueda
KEY_SLEEP Activador del comando de suspensión
KEY_WAKEUP Activador del comando de activación
KEY_NOTIFICATION Abrir el panel lateral de notificaciones
KEY_MUTE Silenciar la salida de audio del sistema
KEY_MICMUTE Silenciar la entrada del micrófono
KEY_BRIGHTNESSDOWN Disminuir el brillo de la pantalla
KEY_BRIGHTNESSUP Aumentar el brillo de la pantalla
KEY_PHONE Abrir la app de teléfono predeterminada
KEY_SEND Enviar o iniciar una llamada telefónica
KEY_HEADSETHOOK Gancho para auriculares (responder/colgar)
KEY_SCREEN Comando activo del protector de pantalla
KEY_CONFIG Menú del sistema de configuración
KEY_SWITCHVIDEOMODE Cambiar el modo de video del sistema
KEY_KBDILLUMTOGGLE Activar o desactivar la retroiluminación del teclado
Subtabla B: Controles de reproducción y contenido multimedia
Código Descripción
KEY_PLAYPAUSE Activar o desactivar el estado de reproducción y pausa
KEY_PLAY Iniciar la reproducción de contenido multimedia
KEY_PAUSECD Pausar la reproducción de CD
KEY_STOPCD Detener la reproducción de CD
KEY_NEXTSONG Pasar a la siguiente pista
KEY_PREVIOUSSONG Ir a la pista anterior
KEY_REWIND Retroceder la pista activa
KEY_FASTFORWARD Adelantar la pista activa
KEY_RECORD Comando para activar la grabación
KEY_SHUFFLE Activar o desactivar la reproducción aleatoria
KEY_REPEAT Activar o desactivar la repetición de la reproducción
KEY_MEDIA Activador de tecla multimedia
Subtabla C: Teclados de navegación y generales
Código Descripción
KEY_UP Dirección hacia arriba del pad direccional
KEY_DOWN Dirección hacia abajo del pad direccional
KEY_LEFT Dirección izquierda del pad direccional
KEY_RIGHT Dirección derecha del pad direccional
KEY_PAGEUP Navegación hacia arriba en la página
KEY_PAGEDOWN Navegación para avanzar página
KEY_INSERT Insertar activador de clave
KEY_DELETE Borrar el activador de la tecla
KEY_ENTER Activador de la tecla Intro
KEY_ESC Activador de la tecla Escape
KEY_TAB Activador de la tecla Tab
KEY_SPACE Activador de la barra espaciadora
KEY_BACKSPACE Activador de la tecla de retroceso
KEY_CLEAR Borrar el búfer de entrada
KEY_CANCEL Cancela la acción activa
KEY_OK Confirmar/Aceptar selección
KEY_SELECT Activador para seleccionar un elemento
KEY_GOTO Ir al lugar designado
KEY_HELP Ayuda sobre el contexto de acceso
Subtabla D: Alfanuméricos y símbolos del teclado numérico
  • Letras del alfabeto estándar: de la KEY_A a la KEY_Z (26 códigos).
  • Teclas del teclado numérico: Del KEY_1 al KEY_0 (10 códigos).
Código Símbolo de personaje
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (teclado numérico)
KEY_KPPLUS + (teclado numérico)
KEY_KPMINUS - (teclado numérico)
KEY_KPDOT . (teclado numérico)
KEY_KPSLASH / (teclado numérico)
KEY_KPENTER Intro (teclado numérico)
KEY_KPEQUAL = (teclado numérico)
KEY_KPCOMMA , (teclado numérico)
KEY_KPJPCOMMA , (diseño japonés)
KEY_KPLEFTPAREN ( (teclado numérico)
KEY_KPRIGHTPAREN ) (teclado numérico)
KEY_KPPLUSMINUS ± (teclado numérico)
Subtabla E: Teclas modificadoras y de función
  • Teclas de función estándar: De KEY_F1 a KEY_F24 (24 códigos).
Código Descripción
KEY_LEFTSHIFT Modificador de teclado Mayúsculas izquierda
KEY_RIGHTSHIFT Modificador de teclado Mayúsculas derecha
KEY_LEFTCTRL Modificador de teclado Control izquierdo
KEY_RIGHTCTRL Modificador de teclado Control derecho
KEY_LEFTALT Modificador de teclado Alt izquierdo
KEY_RIGHTALT Modificador de teclado Alt derecho
KEY_LEFTMETA Tecla Meta/Command izquierda
KEY_RIGHTMETA Tecla Meta/Command derecha
KEY_CAPSLOCK Activar o desactivar el bloqueo de mayúsculas del teclado
KEY_NUMLOCK Botón de activación del bloqueo numérico del teclado
KEY_SCROLLLOCK Activar o desactivar el bloqueo de desplazamiento del teclado
KEY_COMPOSE Asistente de caracteres de Compose
KEY_FN Tecla FN del teclado físico
KEY_FN_ESC Combinaciones de teclas de función
KEY_FN_1 Combinación de teclas de función especial 1
KEY_FN_2 Combinación de teclas de función especial 2
KEY_FN_D Combinación de teclas de función especial D
KEY_FN_E Combinación de teclas de función especial E
KEY_FN_F Combinación de teclas de función especial F
KEY_FN_S Combinación de teclas de función especial S
KEY_FN_B Combinación de teclas de función especial B
Tabla secundaria F: Controles de juegos y joysticks
Código Descripción
BTN_A/BTN_B/BTN_C Botones frontales A, B y C del control
BTN_X/BTN_Y/BTN_Z Botones frontales X, Y y Z del control
BTN_START Botón de menú de inicio del control de juegos
BTN_SELECT Botón Seleccionar del control de juegos
BTN_MODE Interruptor de modo del control
BTN_TL/BTN_TR Botones superiores izquierdo y derecho
BTN_TL2/BTN_TR2 Gatillos analógicos izquierdo y derecho
BTN_THUMBL/BTN_THUMBR Clics con el joystick izquierdo o derecho
BTN_DPAD_UP Activador del pad direccional hacia arriba del control de juegos
BTN_DPAD_DOWN Activador de pad direccional hacia abajo del control de juegos
BTN_DPAD_LEFT Gatillo izquierdo del pad direccional del control de juegos
BTN_DPAD_RIGHT Gatillo derecho del pad direccional del control de juegos
BTN_THUMB Gatillo principal del joystick
BTN_TOP/BTN_TOP2 Botones superiores del joystick
BTN_PINKIE Activadores del botón de meñique del joystick
De BTN_BASE a _BASE6 Botones de la base de la plataforma del joystick
BTN_DEAD Parámetro de configuración de la zona muerta del control de juegos inactivo
BTN_TRIGGER Gatillo manual del joystick físico
BTN_JOYSTICK Código de entrada de joystick genérico
Subtabla G: Entradas de mouse, táctiles y de pluma stylus
Código Descripción
BTN_MOUSE Evento genérico del puntero del mouse
BTN_LEFT Hacer clic con el botón izquierdo del mouse
BTN_RIGHT Hacer clic con el botón derecho del mouse
BTN_MIDDLE Clic con la rueda del mouse
BTN_SIDE Activador de la tecla lateral de navegación
BTN_EXTRA Activador de botón adicional del mouse
BTN_FORWARD Clic de navegación hacia adelante en el navegador
BTN_BACK Clic en la navegación hacia atrás del navegador
BTN_TASK Tecla de cambio de tareas del sistema
BTN_TOUCH Se detectó contacto físico con la pantalla
BTN_STYLUS Proximidad de la pluma stylus activa
BTN_STYLUS2 Interruptor secundario en el cuerpo de la pluma stylus
BTN_TOOL_PEN Identificador de la herramienta de lápiz stylus
BTN_TOOL_RUBBER Identificador de la herramienta de borrador de la pluma stylus
BTN_TOOL_BRUSH Identificador de la herramienta de pincel de Painter
BTN_TOOL_PENCIL Identificador de la herramienta de lápiz de dibujo
BTN_TOOL_AIRBRUSH Identificador de la herramienta de pintura con aerógrafo
BTN_TOOL_FINGER Contacto de los dedos con la pantalla táctil
BTN_TOOL_MOUSE Identificador de herramienta de mouse externo
BTN_TOOL_LENS Herramienta de lupa óptica
BTN_TOOL_DOUBLETAP Marca de velocidad de presión doble de gestos
BTN_TOOL_TRIPLETAP Parámetro de velocidad de presión triple para gestos
Subtabla H: Combinaciones de teclas de la app
Código Acción objetivo
KEY_WWW Inicia el navegador web predeterminado
KEY_MAIL Abre el cliente de correo electrónico predeterminado
KEY_BOOKMARKS Abre la lista de favoritos del navegador
KEY_CALC Abre la utilidad de calculadora
KEY_FILE Abre el explorador de archivos locales
KEY_EDIT Activador de edición de documentos
KEY_NEW Documento: Crea un activador nuevo
KEY_OPEN Activador de apertura de documentos
KEY_SAVE Activador de la tarea de guardar archivos
KEY_CLOSE Activador de tarea de cierre de archivo
KEY_PRINT Activador de tareas de impresión de archivos
KEY_COPY Acción de copiar el búfer del portapapeles
KEY_PASTE Acción de inserción del búfer del portapapeles
KEY_CUT Acción de cortar el búfer del portapapeles
KEY_UNDO Acción para deshacer el búfer del portapapeles
KEY_REDO Acción de rehacer del búfer del portapapeles
KEY_CANCEL Activador del proceso de cancelación del búfer
KEY_FIND Utilidad de búsqueda de documentos
KEY_REFRESH Utilidad de actualización de documentos
KEY_EXIT Utilidad de cierre de documentos
KEY_DOCUMENTS Inicia el portal de documentos del sistema
KEY_HOMEPAGE Inicia el navegador de la página principal
KEY_FAVORITES Abre el portal de favoritos del navegador
KEY_CHAT Inicia la mensajería instantánea
KEY_EMAIL Activador de lanzamiento de correo electrónico alternativo
KEY_FINANCE Abrir la utilidad de acciones o finanzas
KEY_SPORT Abrir la utilidad de seguimiento de deportes
KEY_SHOP Abrir el portal de compras digitales
KEY_PLAYER Abrir el reproductor de contenido multimedia principal
KEY_MP3 Abrir el reproductor de MP3 principal
KEY_TEXT Abrir el editor de texto predeterminado
KEY_LIST Abrir la utilidad de lista de tareas
KEY_MEMO Abrir la utilidad de bloc de notas o notas
KEY_CALENDAR Abre el portal del calendario o la agenda
KEY_DIRECTORY Abre el directorio de direcciones del sistema
KEY_COMPUTER Abre el explorador de especificaciones
KEY_TV/KEY_TV2 Inicia el portal de televisión
KEY_RADIO Inicia la utilidad de radio
KEY_CD/KEY_DVD Activa el lector de unidades ópticas
KEY_AUDIO/KEY_VIDEO Accede a las especificaciones de medios
KEY_TUNER Configura receptores o sintonizadores
KEY_SAT/KEY_SAT2 Configura feeds satelitales
KEY_TAPE Reproducir cinta de casete
KEY_VCR Reproducir el feed del reproductor de VCR
KEY_VCR2 Reproducir el feed del reproductor de VCR 2
KEY_AUX Entradas de puertos de medios auxiliares
KEY_SETUP Menú de configuración de la instalación
De KEY_PROG1 a _PROG4 Claves de programa definidas por el usuario
KEY_ZOOM Activar o desactivar el zoom de la vista
KEY_MODE Selección del modo de viewport
KEY_KEYBOARD Mostrar/ocultar el teclado virtual
KEY_LANGUAGE Cambia el idioma de la pista de audio
KEY_TITLE Abrir las opciones de título de contenido multimedia
KEY_SUBTITLE Activar o desactivar la interfaz de subtítulos
KEY_ANGLE Cómo cambiar los ángulos de la cámara de video
KEY_EPG Abrir la guía electrónica de programas
KEY_PVR Abrir la grabadora de video personal
KEY_MHP Plataforma de contenido multimedia abierta para el hogar
KEY_CHANNEL Cómo abrir canales del sintonizador de TV
KEY_CHANNELUP Sintonizar el canal de TV siguiente
KEY_CHANNELDOWN Sintonizar el canal de TV anterior
KEY_RED Botón interactivo rojo
KEY_GREEN Botón interactivo verde
KEY_YELLOW Botón interactivo amarillo
KEY_BLUE Botón interactivo azul
KEY_FIRST Selecciona la primera opción de elemento
KEY_LAST Seleccionar la opción del último elemento
KEY_NEXT Seleccionar la opción de pista siguiente
KEY_PREVIOUS Seleccionar la opción de pista anterior
KEY_RESTART Reiniciar el bucle de la pista multimedia
KEY_SLOW Opción de reproducción en cámara lenta
KEY_AB Bucle de secuencia de repetición de A a B
KEY_PLAYCD Comando de reproducción de la pletina de CD
KEY_PAUSECD Comando para pausar el reproductor de CD
KEY_STOPCD Comando para detener el reproductor de CD
KEY_DIGITS Comando de entrada del teclado digital
KEY_TEEN Opción de valores de adolescentes en el teclado
KEY_TWEN Opción de valores de tween del teclado numérico
KEY_DEL_EOL Borrar hasta el final del búfer de línea
KEY_DEL_EOS Borrar hasta el final del búfer de pantalla
KEY_INS_LINE Insertar búfer de línea nueva
De KEY_BRL_DOT1 a _DOT8 Entradas de botones de la pantalla braille
KEY_VOICECOMMAND Inicia la app de asistente por voz
KEY_SELECTIVE_SCREEN Activa el recorte de pantalla regional
KEY_BATTERY Consulta las notificaciones de batería
KEY_STAR/KEY_SHARP Símbolos del teclado numérico del teléfono
KEY_PLUS Símbolo de más del teclado telefónico
KEY_INFO Mostrar la superposición del panel de información
KEY_TIME Mostrar la hora actual
KEY_VENDOR Especificaciones del proveedor de consultas
KEY_ARCHIVE Abre la utilidad de archivo local
KEY_PROGRAM Configura los parámetros del programa.
KEY_POWER2 Activa la energía de respaldo alternativa

EV_ABS: Eventos de movimiento absoluto

El tipo de evento EV_ABS es fundamental para simular toques precisos, gestos de arrastrar y soltar, acciones de pellizcar con varios toques y ajustes del joystick. Las coordenadas absolutas que se muestran a continuación se asignan directamente a la resolución de pantalla física subyacente.

Código Rango de coordenadas Descripción
ABS_MT_TRACKING_ID -1 o ≥0 ID de seguimiento; -1 finaliza el toque
ABS_MT_POSITION_X De 0 a 1767 Coordenada X (Pixel Fold)
ABS_MT_POSITION_Y De 0 a 2207 Coordenada Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR píxeles Ancho del eje principal del área táctil
ABS_MT_TOUCH_MINOR píxeles Ancho del eje menor del área táctil
ABS_MT_WIDTH_MAJOR píxeles Ancho del eje mayor de la herramienta
ABS_MT_WIDTH_MINOR píxeles Ancho del eje menor de la herramienta
ABS_MT_ORIENTATION De 0 a 255 Ángulo de orientación del contacto
ABS_MT_PRESSURE De 0 a 255 Magnitud de la fuerza de contacto
ABS_MT_DISTANCE mm Distancia de desplazamiento desde la pantalla
ABS_MT_TOOL_TYPE De 0 a 2 0=dedo, 1=bolígrafo, 2=lápiz
ABS_MT_BLOB_ID integer Identificador de BLOB del contacto
ABS_MT_TOOL_X píxeles Coordenada de la posición X de la herramienta
ABS_MT_TOOL_Y píxeles Coordenada de la posición Y de la herramienta
ABS_MT_SLOT De 0 a N Ranura activa (protocolo B)
ABS_X/_Y/_Z analógico Ejes de coordenadas del joystick
ABS_RX/_RY/_RZ analógico Ejes de rotación del joystick
ABS_THROTTLE/_BRAKE analógico Pedales y controles de dirección
ABS_HAT0X/_HAT0Y -1/0/1 Botón de vista (POV) y pad direccional
ABS_PRESSURE De 0 a 255 Nivel de fuerza de la pluma stylus o el puntero
ABS_DISTANCE mm Distancia de desplazamiento (lápiz stylus)
ABS_TILT_X/_TILT_Y grados Ángulos de inclinación de la pluma stylus
ABS_VOLUME analógico Niveles de volumen del control

La interacción táctil de Android se controla mediante protocolos de función multitáctil (MT). Los emuladores modernos implementan el Protocolo A (sin estado, que envía paquetes de contacto separados por marcas de sincronización) y el Protocolo B (con estado, que asigna contactos a ranuras de seguimiento dedicadas). El protocolo B permite un seguimiento eficiente de varios toques simultáneos para gestos como pellizcar para hacer zoom.

EV_REL y EV_SW: Interruptores de movimiento y hardware

La categoría de evento EV_REL administra los cambios relativos de puntero o coordenadas, que se usan principalmente para emular los movimientos del mouse externo o las ruedas de desplazamiento. La categoría de eventos EV_SW administra los interruptores de dispositivos físicos, como si un teléfono plegable o una tablet están plegados, o si se inserta hardware de audio externo.

Código Valores Descripción
REL_X Delta Movimiento horizontal del cursor
REL_Y Delta Movimiento vertical del cursor
SW_LID 0/1 Estado de la tapa de la laptop (0=Abierta, 1=Cerrada)
SW_TABLET_MODE 0/1 Estado del modo tablet (0=desactivado, 1=activo)
SW_HEADPHONE_INSERT 0/1 Estado del conector para auriculares (0=desconectado, 1=conectado)
SW_MICROPHONE_INSERT 0/1 Estado del conector del micrófono (0=Desconectado, 1=Conectado)
Sintaxis de envío de comandos

Para enviar estos códigos, dale formato al comando de la consola con tipos, códigos y valores separados por dos puntos. Puedes poner en cola varios cambios de coordenadas en una sola cadena. Es fundamental que siempre agregues una marca de sincronización final (EV_SYN:0:0) para indicar que el framework del emulador debe agrupar y procesar estas entradas juntas.

Ejemplos de secuencias de comandos de eventos y gestos

Como Telnet permite enviar parámetros de varias partes, puedes simular secuencias de gestos físicos realistas. A continuación, se muestran las estructuras de secuencias de comandos de eventos sin procesar para automatizar los gestos desde la consola del host.

Cómo simular una presión en la pantalla

Para realizar una presión limpia en la pantalla en una coordenada de destino, asigna un ID de seguimiento, especifica las coordenadas X e Y en la pantalla, simula el toque de contacto, sincroniza y, luego, suelta.

# 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
Simula un desplazamiento vertical (deslizar el dedo)

Para ejecutar un gesto de deslizamiento, mantén presionado el contacto en la coordenada inicial, envía fotogramas de coordenadas de movimiento intermedios y suelta al final.

# 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
Cómo simular un gesto de pellizcar para hacer zoom

Para activar un zoom con dos dedos, usa ranuras de MT activas (0 y 1) para hacer un seguimiento y coordinar dos coordenadas táctiles simultáneas que se alejan una de la otra.

# 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
Simula un cambio de conexión de auriculares

Simular la inserción o extracción del conector para auriculares para probar los interruptores de enrutamiento de audio Un valor de 1 representa la inserción del conector, y 0 es la eliminación de los auriculares.

# 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
Descubre los códigos de eventos de la consola desde un dispositivo real

Para descubrir la secuencia exacta de la sintaxis de eventos de cualquier acción personalizada o gesto de botón, conéctate con adb shell y ejecuta la utilidad de diagnóstico getevent. A medida que interactúas con la GUI del emulador, la consola imprime los códigos, tipos y posiciones exactos de los eventos.

# 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: Envía una cadena de caracteres que simulan pulsaciones de teclas. El mensaje debe ser una string UTF-8. Las publicaciones de Unicode se asignan al revés, según el teclado del dispositivo actual, y los caracteres no compatibles se descartan sin emitir sonido.

Controles de estado de encendido

  • power display: Muestra el estado de la batería y el cargador.

  • power ac {on| off}: Establece el estado de carga de CA en activado o desactivado.

  • power status {unknown| charging| discharging| not-charging| full}: Cambia el estado de la batería según lo especificado.

  • power present {true| false}: Establece el estado de presencia de la batería.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: Establece el estado de la batería.

  • power capacity percent: Establece el estado de la capacidad restante de la batería en un porcentaje de 0 a 100.

Estado de la conexión de red (solo Ethernet y móvil)

  • Estado de la red: Comprueba el estado de la red y las características actuales de demora y velocidad.

  • network delay latency Cambia la latencia de red emulada.

    El emulador te permite simular varios niveles de latencia de red para que puedas probar tu app en un entorno más típico de las condiciones reales de ejecución. Puedes establecer un nivel o rango de latencia al inicio del emulador, o usar la consola para cambiar la latencia mientras se ejecuta la app en el emulador.

    El formato de la latencia de red es uno de los siguientes (los números son milisegundos):

    Formato de latencia de red:

  • gprs: GPRS, que utiliza un rango de latencia de un mínimo de 150 y un máximo de 550

  • edge: EDGE/EGPRS, que utiliza un rango de latencia de un mínimo de 80 y un máximo de 400.

  • umts: UMTS/3G, que utiliza un rango de latencia de un mínimo de 35 y un máximo de 200

  • none: Sin latencia

  • num: Emula la latencia especificada en milisegundos.

  • min:max: Emula el rango de latencia especificado.

    Para establecer la latencia al inicio del emulador, usa la opción del emulador -netdelay con un valor de latencia compatible. Ejemplos:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Para realizar cambios en la demora de red mientras el emulador está en funcionamiento, conéctate a la consola y usa el comando network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed El emulador te permite simular varias velocidades de transferencia de red. Puedes establecer una velocidad o rango de transferencia al inicio del emulador, o usar la consola para cambiar la velocidad mientras se ejecuta la app.

    El formato de la velocidad de red es uno de los siguientes (los números indican kilobits por segundo):

    Formato de velocidad de red:

  • gsm: GSM/CSD, que usa una velocidad de 14.4 ascendente y descendente

  • hscsd: HSCSD, que usa una velocidad de 14.4 ascendente y 43.2 descendente

  • gprs: GPRS, que usa una velocidad de 40.0 ascendente y 80.0 descendente

  • edge: EDGE/EGPRS, que usa una velocidad de 118.4 ascendente y 236.8 descendente

  • umts: UMTS/3G, que utiliza una velocidad de 128.0 ascendente y 1,920 descendente

  • hsdpa: HSDPA, que usa una velocidad de 348.0 ascendente y 14,400.0 descendente.

  • lte: LTE, que usa una velocidad de 58,000 ascendente y 173,000 descendente

  • evdo: EVDO, que utiliza una velocidad de 75,000 ascendente y 280,000 descendente

  • full: Velocidad ilimitada, pero depende de la velocidad de conexión de tu computadora.

  • num: Establece una velocidad exacta en kilobits por segundo que se utiliza para carga y descarga.

  • up:down: Establece las velocidades exactas en kilobits por segundo para carga y descarga por separado.

    Para establecer la velocidad de red al inicio del emulador, usa la opción del emulador -netspeed. Ejemplos:

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

    Para realizar cambios en la velocidad de la red mientras el emulador está en funcionamiento, conéctate a la consola y usa el comando network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Envía paquetes a un archivo. En la siguiente lista, se describen los parámetros y los valores de los parámetros:

    Nota: A partir de Android Emulator 36.5, netsim controla el tráfico de la conexión Wi-Fi de forma predeterminada. El comando de consola de captura de red solo captura el tráfico de WAN o móvil heredado que se enruta a través de la pila de slirp de QEMU. Para capturar paquetes de Wi-Fi, Bluetooth o de red avanzada en versiones modernas del emulador, consulta Cómo capturar el tráfico de red en la guía de Herramientas de redes avanzadas del emulador.

  • start file: Comienza a capturar paquetes de red. Por motivos de seguridad, el archivo debe ser un nombre de archivo simple (sin separadores de ruta de acceso, como /, y sin ..). El archivo de captura de paquetes se guardará en el directorio de contenido de tu AVD, en la carpeta console_out/ (por ejemplo, ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: Deja de enviar paquetes al archivo especificado.

Emulación de telefonía

Android Emulator incluye sus propios módems emulados de GSM y CDMA que te permiten simular funciones de telefonía en el emulador. Por ejemplo, con GSM, puedes simular llamadas telefónicas entrantes y establecer y detener conexiones de datos. Con CDMA, proporcionas una fuente de suscripción y la lista de roaming preferida. El sistema Android controla las llamadas simuladas exactamente como lo haría con las llamadas reales. El emulador no admite audio de la llamada.

  • gsm {call| accept| cancel| busy} phonenumber Los parámetros de gsm son los siguientes:

    • call: Simula una llamada entrante desde phonenumber.
    • accept: Acepta una llamada entrante desde phonenumber y cambia el estado de la llamada a activo. Puedes cambiar el estado de una llamada a activo solo cuando el estado actual es en espera o retenida.
    • cancel: Finaliza una llamada entrante o saliente con phonenumber.
    • busy: Cierra una llamada saliente a phonenumber y cambia el estado de la llamada a busy. Puedes cambiar el estado de una llamada a ocupado solo cuando el estado actual es en espera.
  • gsm {data| voice} state El comando de estado de datos cambia el estado de la conexión de datos GPRS, y el comando de estado de voz cambia el estado de la conexión de voz GPRS, de la siguiente manera:

    • unregistered: No hay red disponible
    • home: En la red local, sin roaming.
    • roaming: En red de roaming
    • searching: Buscando redes
    • denied: Solo llamadas de emergencia
    • off: Es igual que sin registrar.
    • on: Igual que home.
  • gsm hold: Cambia el estado de una llamada a en espera. Puedes cambiar el estado de una llamada a en espera solo cuando el estado actual es activa o en espera.

  • gsm list: Detalla todas las llamadas entrantes y salientes, así como sus estados.

  • gsm status: Informa el estado actual de voz y datos de GSM. Los valores son los descritos para los comandos de voz y datos.

  • gsm signal {rssi| ber} Cambia la intensidad de la señal informada (rssi) y el índice de error de bit (ber) en los próximos 15 segundos de actualización. En la siguiente lista, se describen los parámetros y sus valores:

    • rssi: El rango es de 0 a 31 y 99 para un valor desconocido.
    • ber: El rango es de 0 a 7 y 99 para un valor desconocido.
  • gsm signal-profile num: Establece el perfil de intensidad de la señal. num es un número del 0 al 4.

  • cdma ssource source Establece la fuente de suscripción de CDMA actual, donde source es una lista de entidades permitidas basada en la red que incluye los suscriptores del operador de CDMA y sus valores, de la siguiente manera:

    • nv: Lee la suscripción desde la memoria RAM no volátil.
    • ruim: Lee la suscripción desde el módulo extraíble de identidad de usuario (RUIM).
  • cdma prl_version version: Vuelca la versión actual de la lista de roaming preferida (PRL). El número de versión es para la base de datos de la PRL que contiene información utilizada durante el proceso de selección y adquisición del sistema.

Administrar sensores en el emulador

Estos comandos se relacionan con los sensores disponibles en el AVD. Además de usar el comando sensor, puedes ver y ajustar la configuración del emulador en la pantalla Virtual sensors de las pestañas Accelerometer y Additional sensors.

  • sensor status: Enumera todos los sensores y sus estados.

  • sensor get sensor-name: Obtiene la configuración de sensor-name. En el siguiente ejemplo, se obtiene el valor del sensor de aceleración:

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

    Los valores de aceleración separados por dos puntos (:) hacen referencia a las coordenadas x, y, y z de los sensores virtuales.

  • sensor set sensor-name value-x:value-y:value-z: Establece los valores para sensor-name. En el siguiente ejemplo, se establece el sensor de aceleración en los siguientes valores de "x", "y" y "z" separados por dos puntos.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Emulación de SMS

  • sms send sender-phone-number textmessage Genera un SMS entrante emulado. En la siguiente lista, se describen los parámetros y sus valores:

    • sender-phone-number: Contiene una string numérica arbitraria.
    • textmessage: Es el mensaje SMS.

    En el siguiente ejemplo, se envía el mensaje "hi there" al número de teléfono 4085555555:

    sms send 4085555555 hi there
    

La consola reenvía el mensaje SMS al framework de Android, que lo pasa a una app en el emulador compatible con SMS, por ejemplo, la app de Mensajes. Si pasas 10 números, la app les aplica el formato de número de teléfono. Las cadenas numéricas más largas o más cortas se muestran de la forma en que las enviaste.

Simulación de huellas digitales

  • finger touch fingerprint-id: Simula un dedo que toca el sensor.

  • finger remove: Simula que se levanta un dedo.

Para obtener instrucciones sobre cómo usar estos comandos, consulta la siguiente sección sobre simulación y validación de huellas digitales.

Grabar pantalla

El comando de grabación de pantalla permite capturar archivos de video de alta calidad de la pantalla física del emulador directamente desde el sistema host. Esto es muy útil para las canalizaciones de integración continua y los informes de errores automatizados.

  • screenrecord {start| stop} file Inicia o detiene el proceso de grabación de la pantalla.
    • start file: Inicia la grabación de video. El archivo de salida debe terminar con la extensión obligatoria .webm. El video capturado se guarda directamente en el directorio de salida de la consola de tu AVD: ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: Detiene el proceso de grabación de la pantalla activa.

Automatización y macro

El subsistema de automatización permite que los desarrolladores registren transiciones de estado de macros en el dispositivo virtual en ejecución y las reproduzcan para ejecutar flujos de pruebas automatizadas.

  • automation {record| stop-record| play| stop-play} Administra las grabaciones de macros automatizadas.
    • record: Comienza a grabar los cambios de estado y las entradas del dispositivo.
    • stop-record: Detiene la sesión de grabación de macros actual.
    • play: Comienza a reproducir una secuencia de macros grabada.
    • stop-play: Detiene la secuencia de reproducción de la macro activa.

Física (6DoF)

Los comandos de física administran el registro de poses espaciales de verdad fundamental para los modelos de movimiento físico de seis grados de libertad (6DoF), que se usan para simular el seguimiento de movimiento avanzado.

  • physics {record-gt| stop} Administra las grabaciones de modelos de poses físicas.
    • record-gt: Comienza a registrar los datos de movimiento de 6DoF de verdad fundamental.
    • stop: Detiene el proceso actual de grabación de la verdad fundamental.

Controles avanzados de dispositivos

En esta sección, se agregan extremos de comandos de consola altamente especializados para parámetros de configuración de emulación avanzados, incluidos proxies de red, parámetros de configuración de varias pantallas, anulaciones de renderización y depuración directa del hipervisor.

  • multidisplay {add| del} Agrega o borra monitores virtuales secundarios para probar configuraciones multipantalla. Nota: No se admiten monitores secundarios en perfiles de plegado, como el Pixel Fold o el emulador de tamaño variable.

  • proxy {set| clear} Configura el reenvío de proxy de red de manera programática desde la consola.

    • set host port: Establece la configuración del proxy de destino.
    • clear: Restablece la configuración del proxy a los valores predeterminados. Nota: Las operaciones de configuración de proxy fallan en entornos de ejecución sin interfaz gráfica.
  • virtualscene-image {wall| table} image_path Personaliza las paredes de fondo o las mesas horizontales que se muestran en el feed de la cámara de la escena virtual con un archivo de imagen de usuario personalizado.

  • resize-display scale Ajusta de forma dinámica la resolución de pantalla entre escalas predeterminadas. Nota: Los ajustes de resolución no son compatibles con las configuraciones sin interfaz gráfica.

  • nodraw {on| off} Inhabilita la renderización física de la GUI en la pantalla del host para reducir la memoria del sistema y la carga de la GPU durante las ejecuciones de automatización sin interfaz gráfica en segundo plano de gran volumen.

  • grpc port Configura el control programático avanzado de dispositivos en extremos de puertos gRPC personalizados.

  • qemu monitor Proporciona acceso directo a la terminal interactiva de la consola del hipervisor subyacente. Este comando solo se puede ingresar en sesiones activas de la consola de Telnet.

  • icebox track pid Habilita las instantáneas automatizadas del sistema cuando el proceso de la app especificado experimenta una excepción no controlada o una falla.

  • phonenumber number Establece el número de teléfono local virtual del dispositivo de destino.

Interfaz programática de gRPC

Las versiones modernas del emulador admiten una potente interfaz programática de gRPC junto con la consola de Telnet heredada. Si bien la consola de Telnet es excelente para sesiones interactivas rápidas o secuencias de comandos básicas, la interfaz de gRPC está diseñada para un control automatizado de alto rendimiento, seguro y sólido en entornos de integración continua (CI) y sin interfaz gráfica. Como ofrece extremos de servicio directos, gRPC elimina la necesidad de analizar flujos de texto, administrar los protocolos de enlace de las sesiones de terminal o exponer puertos de localhost sin encriptar.

Para elegir entre la consola de Telnet heredada y la interfaz programática de gRPC moderna, revisa la siguiente comparación de rendimiento, seguridad y capacidades de las funciones:

Función Consola de Telnet Interfaz de gRPC
Ideal para Depuración manual, sesiones interactivas. CI/CD sin interfaz gráfica, plataformas de pruebas automatizadas pesadas.
Velocidad Más lento; sobrecarga de texto, latencia de conexión. Optimizado; HTTP/2 multiplexado, proto rápido.
Seguridad Sin encriptar; puertos locales (5554-5585). Se puede proteger con TLS y funciona en redes.
Transmisiones No compatible; solo solicitud-respuesta. Transmisiones para logcat, captura de audio de invitado.
Contenido multimedia Escribe archivos de salida en el disco del host o del invitado. Búferes binarios directos por cable
SO invitado Se restringe a comandos fijos del emulador. Ejecuta comandos de shell de Bash nativos para invitados.

Inicia y llama a gRPC

Para usar los extremos de gRPC, inicia Android Emulator desde la línea de comandos y, luego, incluye la marca -grpc, que especifica el puerto de bucle invertido de destino.

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

Una vez que el emulador se esté ejecutando con el servicio de gRPC habilitado, podrás realizar llamadas RPC de manera programática. Para realizar pruebas en la línea de comandos, usa la utilidad grpcurl para comunicarte con los servicios del emulador. Todas las solicitudes tienen formato JSON y se envían en texto sin formato.

# 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

Asignación de la consola de Telnet al servicio de gRPC

En la siguiente tabla de referencia, se asignan los comandos de la consola de Telnet heredados a sus servicios y métodos de gRPC correspondientes, lo que indica cómo automatizar las interacciones comunes con dispositivos virtuales de manera programática:

Categoría Comando Telnet heredado Servicio o método de gRPC
Estado ping EmulatorController/getStatus
Estado avd name incubating.AvdService/getAvdInfo
Estado kill EmulatorController/setVmState
Estado restart EmulatorController/setVmState
Alimentación power display EmulatorController/getBattery
Alimentación power capacity EmulatorController/setBattery
Ubicación geográfica geo fix EmulatorController/setGps
Sensores sensor set incubating.SensorService/setSensor
Datos biométricos finger touch EmulatorController/sendFingerprint
Postura posture EmulatorController/setPosture
Postura physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Llamada GSM gsm call EmulatorController/sendPhone
Llamada GSM phonenumber EmulatorController/setPhoneNumber
Redireccionamiento redir add Waterfall/ForwardPort
Entrada event send EV_KEY EmulatorController/sendKey
Entrada event send EV_ABS EmulatorController/sendTouch
Contenido multimedia screenrecord incubating.ScreenRecording
Procesamiento nodraw EmulatorController/setDisplayMode
Instantáneas avd snapshot list SnapshotService/ListSnapshots
Instantáneas avd snapshot load/save SnapshotService/LoadSnapshot

Comandos programáticos exclusivos de gRPC

La interfaz de gRPC proporciona varias capacidades de vanguardia que son físicamente imposibles de ejecutar en conexiones de consola de Telnet heredadas. Esto incluye la transmisión directa de logcat, la captura o inserción de audio bidireccional, las modificaciones de la GUI del host y el acceso directo a la shell.

Servicio o método de gRPC Parámetro Función
streamLogcat {"maxLines": 100} Transmite los resultados de logcat del sistema invitado
streamAudio {} Transmite el audio de la bocina por cable
injectAudio {"audio": "..."} Inserta transmisiones de audio del micrófono.
UiController {"theme": "DARK"} Modifica los temas de la ventana del host
Waterfall/Exec {"cmd": "ls"} Ejecuta comandos de shell nativos del SO invitado.

Simulación y validación de huellas digitales

Figura 1: Pantalla de autenticación de huella digital.

Usa el comando finger para simular y validar la autenticación de huellas digitales para tu app. Necesitas la versión 24.3 o versiones posteriores de las herramientas del SDK y Android 6.0 (nivel de API 23) o versiones posteriores.

Para simular y validar la autenticación de huellas digitales, sigue estos pasos:

  1. Si aún no tienes un ID de huella dactilar, registra una huella dactilar nueva en el emulador. Para ello, selecciona Configuración > Seguridad > Huella dactilar y sigue las instrucciones de registro.

  2. Configura tu app para que acepte la autenticación con huella digital. Después de realizar esta configuración, el dispositivo mostrará la pantalla de autenticación con huella dactilar.

  3. Mientras la app muestra la pantalla de autenticación de huella digital, ve a la consola y, luego, ingresa el comando finger touch y el ID de huella digital que creaste. Esto simula el toque de un dedo.

  4. Luego, ingresa el comando finger remove para simular que se quita el dedo. La app debe responder como si un usuario tocara el sensor de huellas dactilares y, luego, levantara el dedo.