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:
Abre una ventana de terminal e ingresa el siguiente comando:
telnet localhost console-portEl 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 devicesimprime 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.
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_tokendebe coincidir con el contenido del archivo.emulator_console_auth_tokenen tu directorio principal.Si ese archivo no existe, el comando
telnet localhost console-portcrea 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_tokeno crea un archivo vacío si no existe.Después de conectarte a la consola, ingresa comandos de consola.
Ingresa
help,help commandohelp-verbosepara ver una lista de comandos de la consola y obtener información sobre comandos específicos.Para salir de la sesión de la consola, ingresa
quitoexit.
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 firstactivitysnapshotfold: 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-portAgrega 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-portBorra 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 OKevent 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_Aa laKEY_Z(26 códigos). - Teclas del teclado numérico: Del
KEY_1alKEY_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_F1aKEY_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 latencyCambia 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
-netdelaycon un valor de latencia compatible. Ejemplos:emulator -netdelay gprs emulator -netdelay 40,100Para 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 100network speed speedEl 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_26Para 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 80network capture {start| stop} fileEnví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 carpetaconsole_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} phonenumberLos 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} stateEl 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 sourceEstablece 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.812348Los 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 textmessageGenera 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} fileInicia 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.
- start file: Inicia la grabación de video. El archivo de salida debe terminar con
la extensión obligatoria
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_pathPersonaliza 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 scaleAjusta 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 portConfigura el control programático avanzado de dispositivos en extremos de puertos gRPC personalizados.qemu monitorProporciona 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 pidHabilita las instantáneas automatizadas del sistema cuando el proceso de la app especificado experimenta una excepción no controlada o una falla.phonenumber numberEstablece 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
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:
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.
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.
Mientras la app muestra la pantalla de autenticación de huella digital, ve a la consola y, luego, ingresa el comando
finger touchy el ID de huella digital que creaste. Esto simula el toque de un dedo.Luego, ingresa el comando
finger removepara 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.