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:
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 poder ingresar los comandos de la consola, la consola del emulador requiere autenticación.
auth_tokendebe coincidir con el contenido del archivo.emulator_console_auth_tokenen tu directorio principal.Si no existe ese archivo, el comando
telnet localhost console-portlo 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_tokeno crea un archivo vacío si no existe.Después de conectarte, ingresa los comandos de la 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 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 firstactivitysnapshotfold: 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-portAgrega 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-portBorra 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 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 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_AaKEY_Z(26 códigos). - Teclas del teclado numérico:
KEY_1aKEY_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_F1aKEY_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 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 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_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 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 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 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} 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 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} 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: 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 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 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.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 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 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 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} fileInicia 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.
- 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 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_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 del usuario personalizado.resize-display scaleAjusta 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 portConfigura el control avanzado programático de dispositivos a través de 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 a través de sesiones activas de la consola de Telnet.icebox track pidHabilita las instantáneas automáticas del sistema cuando el proceso de la app especificada experimenta una excepción o una falla no controlada.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 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
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 digital, inscríbe una nueva huella en el emulador seleccionando Settings > Security > Fingerprint y siguiendo las instrucciones correspondientes.
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.
Mientras tu app muestra esa pantalla, ve a la consola y escribe el comando
finger touchy el ID de huella digital que creaste. Esto simulará el toque de un dedo.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.