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 la 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 poder ingresar los comandos de la 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 no existe ese archivo, el comando telnet localhost console-port lo creará y contendrá un token de autenticación generado de manera 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, ingresa los comandos de la 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 atajo adb emu, que ejecuta el comando y devuelve el control de inmediato 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 deseas dirigirte:

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.
    • 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 la pantalla más pequeña (si el dispositivo es plegable y está desplegado).

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

  • kill: Finaliza el proceso del dispositivo virtual.

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

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

Falla del emulador

  • crash: Bloquea el emulador durante la ejecución de la app.

  • crash-on-exit: Bloquea el emulador 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 radio:

    debug radio
    

Redirección de puerto

  • redir list: Enumera el redireccionamiento del puerto actual.

  • redir add protocol:host-port:guest-port Agrega una nueva redirección 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 de 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 geo 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 consultar al administrador de ubicaciones para 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 oración 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 las acciones de presionar y soltar botones. En las siguientes tablas, se divide la extensa lista de códigos de teclas admitidos en categorías lógicas. Para cada código de tecla, el envío de 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: Combinaciones de teclas del sistema Android
Código Descripción
KEY_HOME Activador del 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 o 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 sueño
KEY_WAKEUP Activador de comando de activación
KEY_NOTIFICATION Abrir el panel de notificaciones
KEY_MUTE Silenciar la salida de audio del sistema
KEY_MICMUTE Silenciar la entrada de micrófono
KEY_BRIGHTNESSDOWN Cómo 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 de protector de pantalla activo
KEY_CONFIG Menú del sistema de configuración
KEY_SWITCHVIDEOMODE Cambia el modo de video del sistema
KEY_KBDILLUMTOGGLE Activar o desactivar la retroiluminación del teclado
Tabla secundaria B: Controles de contenido multimedia y reproducción
Código Descripción
KEY_PLAYPAUSE Alternar el estado de reproducción y pausa
KEY_PLAY Iniciar la reproducción de contenido multimedia
KEY_PAUSECD Cómo pausar la reproducción de CD
KEY_STOPCD Cómo detener la reproducción de un CD
KEY_NEXTSONG Ir a la siguiente pista
KEY_PREVIOUSSONG Ir a la pista anterior
KEY_REWIND Retrocede el segmento activo
KEY_FASTFORWARD Avanzar el segmento activo
KEY_RECORD Comando de activación de grabación
KEY_SHUFFLE Activar o desactivar la reproducción aleatoria
KEY_REPEAT Activar o desactivar la reproducción repetida
KEY_MEDIA Activador de tecla multimedia
Tabla secundaria C: Teclados generales y de navegación
Código Descripción
KEY_UP Dirección del pad direccional hacia arriba
KEY_DOWN Dirección hacia abajo en el pad direccional
KEY_LEFT Dirección izquierda del pad direccional
KEY_RIGHT Dirección derecha del pad direccional
KEY_PAGEUP Navegación con Re Pág
KEY_PAGEDOWN Navegación de página siguiente
KEY_INSERT Inserta un activador de tecla
KEY_DELETE Borrar el activador de la tecla
KEY_ENTER Activador de tecla Intro
KEY_ESC Activador de tecla de escape
KEY_TAB Activador de la tecla Tab
KEY_SPACE Activador de la tecla de barra espaciadora
KEY_BACKSPACE Activador de la tecla de retroceso
KEY_CLEAR Borra el búfer de entrada
KEY_CANCEL Cancela la acción activa
KEY_OK Confirmar o aceptar la selección
KEY_SELECT Activador de selección de elemento
KEY_GOTO Ir al lugar designado
KEY_HELP Cómo acceder al contexto de ayuda
Subtabla D: Símbolos alfanuméricos y de teclado
  • Letras del alfabeto estándar: De KEY_A a KEY_Z (26 códigos).
  • Teclas del teclado numérico: KEY_1 a KEY_0 (10 códigos).
Código Símbolo de carácter
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)
Tabla secundaria E: Teclas modificadoras y de función
  • Teclas de función estándar: KEY_F1 a KEY_F24 (24 códigos).
Código Descripción
KEY_LEFTSHIFT Modificador de teclado Mayúsculas izq.
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 a la derecha
KEY_LEFTMETA Tecla Meta/Comando izquierda
KEY_RIGHTMETA Tecla Meta/Comando derecha
KEY_CAPSLOCK Activación o desactivación del teclado con bloqueo de mayúsculas
KEY_NUMLOCK Botón de activación del bloqueo numérico del teclado
KEY_SCROLLLOCK Activación o desactivación del teclado de bloqueo de desplazamiento
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 Atajo de función especial 1
KEY_FN_2 Atajo de función especial 2
KEY_FN_D Atajo de función especial D
KEY_FN_E Atajo de función especial E
KEY_FN_F Atajo de función especial F
KEY_FN_S Atajo de función especial S
KEY_FN_B Atajo de función especial B
Tabla secundaria F: Gamepads y joysticks
Código Descripción
BTN_A/BTN_B/BTN_C Botones frontales A/B/C del control
BTN_X/BTN_Y/BTN_Z Botones frontales del control X/Y/Z
BTN_START Botón del menú Inicio del gamepad
BTN_SELECT Botón de selección del control de juegos
BTN_MODE Interruptor de modo del controlador
BTN_TL/BTN_TR Protectores laterales 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 de 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 gamepad
BTN_THUMB Activador principal para el pulgar del joystick
BTN_TOP/BTN_TOP2 Botones superiores del joystick
BTN_PINKIE Activadores del botón del meñique del joystick
De BTN_BASE a _BASE6 Botones de la base de la plataforma del joystick
BTN_DEAD Marca de zona muerta del gamepad inactivo
BTN_TRIGGER Gatillo manual del joystick físico
BTN_JOYSTICK Código de entrada genérico del joystick
Tabla secundaria 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 el botón central de la rueda de desplazamiento
BTN_SIDE Activador de la tecla lateral de navegación
BTN_EXTRA Activador de botón del mouse adicional
BTN_FORWARD Clic en la navegación hacia adelante del navegador
BTN_BACK Clic en la navegación hacia atrás del navegador
BTN_TASK Tecla del selector 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 pintura
BTN_TOOL_PENCIL Identificador de la herramienta de lápiz de borrador
BTN_TOOL_AIRBRUSH Identificador de la herramienta de pintura con aerógrafo
BTN_TOOL_FINGER Contacto del dedo con la pantalla táctil
BTN_TOOL_MOUSE Identificador de la herramienta de mouse externa
BTN_TOOL_LENS Herramienta de lente de lupa óptica
BTN_TOOL_DOUBLETAP Marca de velocidad de presión doble del gesto
BTN_TOOL_TRIPLETAP Marca de velocidad de presión triple del gesto
Tabla secundaria H: Accesos directos a aplicaciones
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 Activador de creación de documentos
KEY_OPEN Activador de apertura de documentos
KEY_SAVE Activador de tareas de guardado de archivos
KEY_CLOSE Activador de la tarea de cierre de archivo
KEY_PRINT Activador de tareas de impresión de archivos
KEY_COPY Acción de copia del 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 de deshacer del búfer del portapapeles
KEY_REDO Acción de rehacer el 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 para cerrar documentos
KEY_DOCUMENTS Se lanza 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 deportivo
KEY_SHOP Abrir el portal de compras digitales
KEY_PLAYER Abrir el reproductor 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 memo
KEY_CALENDAR Abre el portal de calendario o agenda
KEY_DIRECTORY Abre el directorio de direcciones del sistema
KEY_COMPUTER Abre el explorador de especificaciones
KEY_TV/KEY_TV2 Se lanza el portal de televisión
KEY_RADIO Inicia la utilidad de radio
KEY_CD/KEY_DVD Activa el lector de la unidad óptica
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 Reproduce la plataforma de medios de cinta
KEY_VCR Reproducir el feed del reproductor de VCR
KEY_VCR2 Reproduce el feed del reproductor de VCR 2
KEY_AUX Entradas de puertos de medios auxiliares
KEY_SETUP Menú de configuración
De KEY_PROG1 a _PROG4 Claves de programa definidas por el usuario
KEY_ZOOM Alternar el zoom del viewport
KEY_MODE Selección del modo de visualización
KEY_KEYBOARD Mostrar u ocultar el teclado virtual
KEY_LANGUAGE Cómo cambiar el idioma de la pista de audio
KEY_TITLE Abrir opciones de título de contenido multimedia
KEY_SUBTITLE Activar o desactivar la interfaz de subtítulos
KEY_ANGLE Cambia 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 multimedia abierta para el hogar
KEY_CHANNEL Abrir canales del sintonizador de TV
KEY_CHANNELUP Sintonizar el canal de TV hacia arriba
KEY_CHANNELDOWN Bajar el canal de TV
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 opción del primer elemento
KEY_LAST Seleccionar la opción del último elemento
KEY_NEXT Seleccionar la opción de pista siguiente
KEY_PREVIOUS Selecciona la opción de pista anterior
KEY_RESTART Reinicia el bucle de la pista de medios
KEY_SLOW Opción de reproducción en cámara lenta
KEY_AB Bucle de secuencia de repetición A-B
KEY_PLAYCD Comando de reproducción de la bandeja de CD
KEY_PAUSECD Comando de pausa de la CD
KEY_STOPCD Comando para detener la plataforma de CD
KEY_DIGITS Comando de entrada del teclado digital
KEY_TEEN Opción de valores para adolescentes en el teclado
KEY_TWEN Opción de valores de twen del teclado
KEY_DEL_EOL Borrar hasta el final del búfer de la línea
KEY_DEL_EOS Borrar hasta el final del búfer de pantalla
KEY_INS_LINE Inserta un búfer de línea nueva
De KEY_BRL_DOT1 a _DOT8 Entradas de botones de la pantalla braille
KEY_VOICECOMMAND Inicia la app del asistente por voz
KEY_SELECTIVE_SCREEN Activa el recorte de pantalla regional.
KEY_BATTERY Consultar notificaciones de batería
KEY_STAR/KEY_SHARP Símbolos del teclado telefónico
KEY_PLUS Teclado telefónico con el símbolo de más
KEY_INFO Mostrar la superposición del panel de información
KEY_TIME Mostrar la hora actual del reloj
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 pellizco multitáctil y ajustes de joystick. Las coordenadas absolutas que se muestran a continuación se correlacionan directamente con 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 secundario del área táctil
ABS_MT_WIDTH_MAJOR píxeles Ancho del eje principal 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 sobre la pantalla
ABS_MT_TOOL_TYPE De 0 a 2 0=dedo, 1=lápiz, 2=lápiz
ABS_MT_BLOB_ID integer Identificador de blob de 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ógica Ejes de coordenadas del joystick
ABS_RX/_RY/_RZ analógica Ejes de rotación del joystick
ABS_THROTTLE/_BRAKE analógica Pedales y controles de dirección
ABS_HAT0X/_HAT0Y -1/0/1 Tapa del pad direccional y conmutadores de POV
ABS_PRESSURE De 0 a 255 Nivel de fuerza del lápiz o puntero
ABS_DISTANCE mm Distancia de desplazamiento (pluma stylus)
ABS_TILT_X/_TILT_Y grados Ángulos de inclinación de la pluma stylus
ABS_VOLUME analógica Niveles de volumen del controlador

La interacción táctil de Android se basa en los protocolos multitáctiles (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 el de pellizcar para hacer zoom.

EV_REL y EV_SW: Interruptores de movimiento y hardware

La categoría de eventos EV_REL administra los cambios relativos del puntero o las coordenadas, que se usan principalmente para emular los movimientos externos del mouse 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=Salida, 1=Entrada)
SW_MICROPHONE_INSERT 0/1 Estado del conector del micrófono (0=Salida, 1=Entrada)
Sintaxis de envío de comandos

Para enviar estos códigos, formatea el 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 siempre agregar 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 gestos y secuencias de comandos de eventos

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

Simulación de un toque en la pantalla

Para realizar un toque limpio en la pantalla en una coordenada objetivo, 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
Cómo simular un desplazamiento vertical (deslizamiento)

Para ejecutar un gesto de deslizamiento de desplazamiento, mantén el contacto en la coordenada inicial, envía fotogramas de coordenadas de movimiento intermedio 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 el zoom con dos dedos, usa las ranuras de MT activas (0 y 1) para hacer un seguimiento y coordinar dos coordenadas táctiles simultáneas que se alejan entre sí.

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

Simula la inserción o extracción de conectores para auriculares para probar los interruptores de enrutamiento de audio. Un valor de 1 representa la inserción del conector y 0, la extracció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
Cómo descubrir códigos de eventos de la consola desde un dispositivo real

Para descubrir la secuencia de sintaxis de eventos exacta para cualquier acción personalizada o gesto de botón, conéctate a través de 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, los tipos y las 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
  • Mensaje de texto del evento: 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

  • Pantalla de alimentación: Muestra el estado de la batería y el cargador.

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

  • 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 como un porcentaje de 0 a 100.

Estado de conexión de red (solo para Ethernet y celular)

  • network status: 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 son kilobits/seg):

    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 y versiones posteriores, netsim controla el tráfico de conexión Wi-Fi de forma predeterminada. El comando de consola de captura de red solo captura el tráfico heredado de WAN o celular que se enruta a través de la pila de slirp de QEMU. Para capturar paquetes de Wi-Fi, Bluetooth o de redes avanzadas en versiones modernas del emulador, consulta Captura tráfico de red en la guía 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 del 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 GSM y CDMA emulados 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 en espera.
    • cancel: Termina una llamada entrante o saliente con phonenumber.
    • busy: Cierra una llamada saliente al número de teléfono y cambia el estado de la llamada a ocupado. 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: Igual que unregistered
    • on: Igual que home.
  • gsm hold: Cambia el estado de una llamada a espera. Puedes cambiar el estado de una llamada a en espera solo cuando el estado actual es activo o en espera.

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

  • gsm status: Informa el estado actual de voz/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 del 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 de sensor-name. En el siguiente ejemplo, se establece el sensor de aceleración en los 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 con 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 la extracción del 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 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 del AVD: ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: Detiene el proceso de grabación de pantalla activo.

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 automáticas.
    • record: Comienza a registrar 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 macros activa.

Física (6 DoF)

Los comandos de física administran el registro de las 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 del modelo de postura física.
    • record-gt: Comienza a registrar los datos de movimiento de 6DoF de la verdad fundamental.
    • stop: Detiene el proceso de grabación de la verdad básica actual.

Controles de dispositivos avanzados

En esta sección, se agregan extremos de comandos de consola altamente especializados para configuraciones de emulación avanzadas, incluidos proxies de red, configuraciones 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 de varias pantallas. Nota: Los monitores secundarios no son compatibles con los perfiles de plegado, como el Pixel Fold o el emulador redimensionable.

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

    • set host port: Configura la configuración de proxy de destino.
    • clear: Restablece la configuración de proxy a los valores predeterminados. Nota: Las operaciones de configuración del proxy fallan en los 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 del usuario personalizado.

  • resize-display scale Ajusta dinámicamente la resolución de la 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 de la GUI física 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 avanzado programático de dispositivos a través de 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 a través de sesiones activas de la consola de Telnet.

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

  • 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 Telnet heredada. Si bien la consola de Telnet es ideal para sesiones interactivas rápidas o secuencias de comandos simples, la interfaz de gRPC está diseñada para un control automatizado seguro, sólido y de alto rendimiento en entornos de integración continua (IC) y sin encabezado. Al ofrecer extremos de servicio directos, gRPC elimina la necesidad de analizar flujos de texto, administrar las negociaciones de sesiones de terminal o exponer puertos localhost sin encriptar.

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

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

Cómo iniciar y llamar a gRPC

Para usar los endpoints de gRPC, inicia el Android Emulator desde la línea de comandos y, luego, incluye la marca -grpc, especificando 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 ejecute con el servicio de gRPC habilitado, podrás realizar llamadas a RPC de forma programática. Para realizar pruebas desde 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 a través de 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 heredados de la consola de Telnet a sus servicios y métodos de gRPC correspondientes, y se indica cómo automatizar las interacciones comunes con dispositivos virtuales de forma 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
Biometrics 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
Redireccionar 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 a través de conexiones heredadas de la consola Telnet. Entre ellas, se incluyen 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 del SO invitado nativo

Simulación y validación de huellas digitales

Figura 1: Pantalla de autenticación con huella dactilar.

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 digital, inscríbe una nueva huella en el emulador seleccionando Settings > Security > Fingerprint y siguiendo las instrucciones correspondientes.

  2. Configura tu app para que acepte la autenticación de huellas digitales. Después de que realices esta configuración, el dispositivo mostrará la pantalla de autenticación de huellas digitales.

  3. Mientras tu app muestra esa pantalla, ve a la consola y escribe el comando finger touch y el ID de huella digital que creaste. Esto simulará el toque de un dedo.

  4. Luego, ingresa el comando finger remove, que simulará el retiro del dedo. La app debe responder como si un usuario tocara y, luego, retirara el dedo del sensor de huellas dactilares.