Enviar comandos do console do emulador

Cada dispositivo virtual em execução dispõe de um console que permite consultar e controlar o ambiente do dispositivo emulado. Por exemplo, é possível usar o console para gerenciar redirecionamentos de porta, características de rede e eventos de telefonia enquanto o app é executado no emulador.

Os comandos a seguir exigem que um emulador já esteja em execução. Para mais informações sobre como executar um emulador, consulte Executar apps no Android Emulator e Iniciar o emulador na linha de comando.

Iniciar e parar uma sessão do console

Para acessar o console e inserir comandos em uma janela de terminal, use telnet para se conectar à porta do console e informe o token de autenticação. Cada vez que o console mostra OK, ele está pronto para aceitar comandos. Não há um comando típico.

Para conectar-se ao console de um dispositivo virtual em execução:

  1. Abra uma janela de terminal e insira o seguinte comando:

    telnet localhost console-port
    

    O título da janela do emulador lista o número da porta do console quando executado em uma janela separada, mas não em uma de ferramentas. Por exemplo, o título da janela de um emulador usando a porta de console 5554 pode ser Pixel8_API_34:5554. Além disso, o comando adb devices mostra uma lista de dispositivos virtuais em execução e os números de porta de console. Para mais informações, consulte Consultar dispositivos.

    Observação:o emulador detecta conexões nas portas 5554 a 5585 e aceita conexões apenas do localhost.

  2. Depois que o console exibir OK, insira o comando auth auth_token.

    Para que você insira comandos, o console do emulador requer autenticação. auth_token precisa corresponder ao conteúdo do arquivo .emulator_console_auth_token no seu diretório inicial.

    O comando telnet localhost console-port cria esse arquivo, que contém um token de autenticação gerado aleatoriamente, caso ele não exista. Para desativar a autenticação, exclua o token do arquivo .emulator_console_auth_token ou crie um arquivo vazio se ele não existir.

  3. Depois de se conectar ao console, insira os comandos.

    Digite help, help command ou help-verbose para ver uma lista de comandos de console e saber mais sobre comandos específicos.

  4. Para sair da sessão de console, insira quit ou exit.

Veja um exemplo de sessão:

$ 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 execução e esquecimento

Se você não precisar manter a sessão aberta, use o atalho adb emu, que executa o comando e retorna imediatamente o controle ao shell de invocação:

adb emu command commandParameter

A invocação com adb emu se conecta ao emulador disponível. Se você tiver vários emuladores em execução ao mesmo tempo, transmita o número de série do emulador específico que você está segmentando:

adb -s emulator-serial emu command commandParameter

Referência de comando do emulador

As listas a seguir descrevem os comandos do console do emulador com os parâmetros e valores relacionados:

Comandos gerais

  • avd {stop| start| status| name} Consulta, controla e gerencia o dispositivo virtual da seguinte maneira:

    • stop: para a execução do dispositivo.
    • start: inicia a execução do dispositivo.
    • status: consulta o status do dispositivo virtual, que pode ser "running" ou "stopped".
    • name: consulta o nome do dispositivo virtual.
  • avd snapshot {list| save name| load name| delete name} Salva e restaura o estado do dispositivo em snapshots desta maneira:

    • list: lista todos os snapshots salvos.
    • save name: salva o snapshot como nome.
    • load name: carrega o snapshot nomeado.
    • delete name: exclui o snapshot nomeado.

    O exemplo a seguir salva um snapshot com o nome firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: dobra o dispositivo para mostrar a menor configuração da tela se ele for dobrável e estiver aberto no momento.

  • desdobrar: desdobra o dispositivo para mostrar a maior configuração da tela se ele for dobrável e estiver dobrado no momento.

  • kill: encerra o dispositivo virtual.

  • ping: verifica se o dispositivo virtual está sendo executado.

  • rotate: gira o AVD no sentido anti-horário em incrementos de 45 graus.

Falha no emulador

  • crash: causa uma falha no emulador durante a execução do app.

  • crash-on-exit: causa uma falha no emulador quando o app é encerrado.

Tags de depuração

  • tags de depuração ...: ativa ou desativa mensagens de depuração de partes específicas do emulador. O parâmetro "tags" precisa ser um valor da lista de tags de depuração que aparece quando você executa emulator -help-debug-tags. Para mais informações sobre a opção -help-debug-tags, consulte a tabela de opções usadas com mais frequência. O exemplo a seguir ativa a tag "radio":

    debug radio
    

Redirecionamento de porta

  • redir list: lista o redirecionamento de porta atual.

  • redir add protocol:host-port:guest-port Adiciona um novo redirecionamento de porta, da seguinte maneira:

    • protocol: precisa ser tcp ou udp.
    • host-port: número da porta a ser aberta no host.
    • guest-port: número da porta para a qual rotear dados no emulador.
  • redir del protocol:host-port Exclui um redirecionamento de porta.

    • protocol: precisa ser tcp ou udp.
    • host-port: número da porta a ser aberta no host.

Localização geográfica

Define a localização geográfica relatada para os apps em execução dentro de um emulador, enviando um ponto GPS para o emulador.

Você poderá emitir um dos seguintes comandos geo assim que um dispositivo virtual estiver em execução. O emulador define o local que você insere criando um provedor de locais fictícios. Esse provedor responde aos listeners de localização definidos por apps e informa o local para o LocationManager. Qualquer app pode consultar o gerenciador de localização para acessar o ponto GPS atual do dispositivo emulado chamando LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: envia um ponto GPS simples para o emulador. Especifique a longitude e a latitude em graus decimais. Use um número de 1 a 12 para especificar a quantidade de satélites a serem usados para determinar a posição e especifique a altitude em metros e a velocidade em nós.

  • geo nmea sentence: envia uma sentença NMEA 0183 para o dispositivo emulado como se ela tivesse sido enviada de um modem GPS emulado. Comece a frase com "$GP". No momento, só há suporte para as sentenças "$GPGGA" e "$GPRCM". O exemplo a seguir é uma sentença de Dados de Posição do Sistema de Posicionamento Global (GPGGA, na sigla em inglês) que recebe o horário, a posição e os dados de localização de um receptor 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 falsos de hardware

O subsistema de eventos de hardware do console do emulador permite simular praticamente qualquer interação física com o dispositivo. Isso inclui botões físicos, toque/gestos na tela, controles giratórios, entradas de joystick e chaves de hardware.

  • event types: lista todos os tipos de eventos falsos. Para eventos que têm códigos, o número de códigos é listado entre parênteses à direita. Exemplo de saída:

    event types
    event <type> can be an integer or one of the following aliases:
        EV_SYN
        EV_KEY    (405 code aliases)
        EV_REL    (2 code aliases)
        EV_ABS    (27 code aliases)
        EV_MSC
        EV_SW     (4 code aliases)
        EV_LED
        EV_SND
        EV_REP
        EV_FF
        EV_PWR
        EV_FF_STATUS
        EV_MAX
    OK
    
  • event send types [types ...]: envia um ou mais tipos de eventos falsos.

  • Tipo de códigos de evento: lista os códigos de evento para o tipo de evento falso especificado.

  • event send type[:code]:[value] [...]: envia um ou mais eventos falsos com códigos e valores de código opcionais.

EV_KEY: referências de código de tecla

O tipo de evento EV_KEY é usado para simular pressionamentos e liberações de botões. As tabelas a seguir dividem a vasta lista de códigos de tecla compatíveis em categorias lógicas. Para cada código de tecla, o envio de um valor 1 simula uma ação de pressionar, enquanto um valor 0 simula uma ação de soltar. Um valor de 2 representa a repetição de tecla.

Subtabela A: chaves do sistema Android
Código Descrição
KEY_HOME Gatilho do botão home
KEY_BACK Acionador do botão "Voltar"
KEY_MENU Botão de menu (flutuante)
KEY_POWER Botão liga/desliga (pressionar/tocar e manter pressionado)
KEY_VOLUMEUP Gatilho do botão Aumentar volume
KEY_VOLUMEDOWN Acionador do botão Diminuir volume
KEY_CAMERA Botão físico do obturador da câmera
KEY_FOCUS Obturador de foco automático da câmera
KEY_SEARCH Acionador do botão de pesquisa
KEY_SLEEP Gatilho de comando de suspensão
KEY_WAKEUP Gatilho do comando de ativação
KEY_NOTIFICATION Abrir a gaveta de notificações
KEY_MUTE Desativar a saída de áudio do sistema
KEY_MICMUTE Desativar a entrada do microfone
KEY_BRIGHTNESSDOWN Diminuir o brilho da tela
KEY_BRIGHTNESSUP Aumentar o brilho da tela
KEY_PHONE Abrir o app de discador padrão
KEY_SEND Enviar ou iniciar uma ligação
KEY_HEADSETHOOK Gancho do fone de ouvido (atender/desligar)
KEY_SCREEN Comando de ativação do protetor de tela
KEY_CONFIG Menu do sistema de configuração
KEY_SWITCHVIDEOMODE Mudar o modo de vídeo do sistema
KEY_KBDILLUMTOGGLE Ativar/desativar a luz de fundo do teclado
Subtabela B: controles de mídia e reprodução
Código Descrição
KEY_PLAYPAUSE Alternar o estado de reprodução e pausa
KEY_PLAY Iniciar a reprodução de mídia
KEY_PAUSECD Pausar a reprodução de CD
KEY_STOPCD Parar a reprodução de CD
KEY_NEXTSONG Pular para a próxima faixa
KEY_PREVIOUSSONG Voltar para a faixa anterior
KEY_REWIND Retroceder a faixa ativa
KEY_FASTFORWARD Avançar a faixa ativa
KEY_RECORD Comando de acionamento de gravação
KEY_SHUFFLE Ativar/desativar a reprodução aleatória
KEY_REPEAT Ativar/desativar a repetição da reprodução
KEY_MEDIA Gatilho de tecla de mídia
Subtabela C: navegação e teclados gerais
Código Descrição
KEY_UP Direção do botão direcional para cima
KEY_DOWN Direção do botão direcional para baixo
KEY_LEFT Direção do botão direcional para a esquerda
KEY_RIGHT Direção do botão direcional para a direita
KEY_PAGEUP Navegação para cima
KEY_PAGEDOWN Navegação para baixo na página
KEY_INSERT Inserir um gatilho de tecla
KEY_DELETE Excluir gatilho de tecla
KEY_ENTER Acionador de tecla Enter
KEY_ESC Gatilho da tecla Esc
KEY_TAB Acionador da tecla Tab
KEY_SPACE Acionador da tecla de espaço
KEY_BACKSPACE Acionador da tecla Backspace
KEY_CLEAR Limpar buffer de entrada
KEY_CANCEL Cancelar ação ativa
KEY_OK Confirmar/OK
KEY_SELECT Selecionar acionador de item
KEY_GOTO Ir para o local designado
KEY_HELP Acessar o contexto da ajuda
Subtabela D: alfanuméricos e símbolos do teclado numérico
  • Letras padrão do alfabeto:KEY_A a KEY_Z (26 códigos).
  • Teclas do teclado numérico:KEY_1 a KEY_0 (10 códigos).
Código Símbolo de caractere
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 Enter (teclado numérico)
KEY_KPEQUAL = (teclado numérico)
KEY_KPCOMMA , (teclado numérico)
KEY_KPJPCOMMA , (layout japonês)
KEY_KPLEFTPAREN ( (teclado numérico)
KEY_KPRIGHTPAREN ) (teclado numérico)
KEY_KPPLUSMINUS ± (teclado numérico)
Subtabela E: teclas modificadoras e de função
  • Teclas de função padrão:KEY_F1 a KEY_F24 (24 códigos).
Código Descrição
KEY_LEFTSHIFT Modificador de teclado Shift esquerdo
KEY_RIGHTSHIFT Modificador de teclado Shift direito
KEY_LEFTCTRL Modificador de teclado "Control" esquerdo
KEY_RIGHTCTRL Modificador de teclado Control direito
KEY_LEFTALT Modificador de teclado Alt esquerdo
KEY_RIGHTALT Modificador de teclado Alt direito
KEY_LEFTMETA Tecla Meta/Command esquerda
KEY_RIGHTMETA Tecla Meta/Command direita
KEY_CAPSLOCK Alternância do teclado Caps Lock
KEY_NUMLOCK Alternância do teclado Num Lock
KEY_SCROLLLOCK Alternância do teclado Scroll Lock
KEY_COMPOSE Assistente de caracteres do Compose
KEY_FN Tecla FN do teclado físico
KEY_FN_ESC Combinações de teclas de função
KEY_FN_1 Atalho de função especial 1
KEY_FN_2 Atalho para função especial 2
KEY_FN_D Atalho para função especial D
KEY_FN_E Atalho de função especial E
KEY_FN_F Atalho para função especial F
KEY_FN_S Atalho de função especial S
KEY_FN_B Atalho de função especial B
Subtabela F: gamepads e joysticks
Código Descrição
BTN_A / BTN_B / BTN_C Botões frontais A/B/C do controle
BTN_X / BTN_Y / BTN_Z Botões frontais X/Y/Z do controlador
BTN_START Botão do menu Iniciar do gamepad
BTN_SELECT Botão "Selecionar" do gamepad
BTN_MODE Chave do modo de controle
BTN_TL / BTN_TR Botões de ombro esquerdo / direito
BTN_TL2 / BTN_TR2 Gatilhos analógicos esquerdo / direito
BTN_THUMBL / BTN_THUMBR Clique no botão analógico esquerdo / direito
BTN_DPAD_UP Acionador do botão direcional para cima do gamepad
BTN_DPAD_DOWN Gatilho de botão direcional para baixo do gamepad
BTN_DPAD_LEFT Botão direcional esquerdo do gamepad
BTN_DPAD_RIGHT Botão direcional direito do gamepad
BTN_THUMB Acionador principal do joystick
BTN_TOP / BTN_TOP2 Botões superiores do joystick
BTN_PINKIE Botões do joystick acionados pelo dedo mindinho
BTN_BASE a _BASE6 Botões da base da plataforma do joystick
BTN_DEAD Flag de zona morta do gamepad inativa
BTN_TRIGGER Gatilho manual do joystick físico
BTN_JOYSTICK Código de entrada genérico do joystick
Subtabela G: entradas de mouse, toque e stylus
Código Descrição
BTN_MOUSE Evento genérico de ponteiro do mouse.
BTN_LEFT Clique com o botão esquerdo do mouse
BTN_RIGHT Clicar com o botão direito do mouse
BTN_MIDDLE Clique com o botão do meio da roda de rolagem
BTN_SIDE Acionador de tecla lateral de navegação
BTN_EXTRA Gatilho de botão extra do mouse
BTN_FORWARD Clique para avançar na navegação do navegador
BTN_BACK Clique de navegação "voltar" do navegador
BTN_TASK Tecla de seleção de tarefas do sistema
BTN_TOUCH Contato físico com a tela detectado
BTN_STYLUS Proximidade da caneta stylus ativa
BTN_STYLUS2 Botão secundário no stylus
BTN_TOOL_PEN Identificador da ferramenta de caneta stylus.
BTN_TOOL_RUBBER Identificador da ferramenta de borracha da stylus.
BTN_TOOL_BRUSH Identificador da ferramenta de pincel do pintor.
BTN_TOOL_PENCIL Identificador da ferramenta de lápis de desenho
BTN_TOOL_AIRBRUSH Identificador da ferramenta de pintura com aerógrafo.
BTN_TOOL_FINGER Contato do dedo com a tela touchscreen
BTN_TOOL_MOUSE Identificador de ferramenta de mouse externa.
BTN_TOOL_LENS Ferramenta de lente de aumento óptico
BTN_TOOL_DOUBLETAP Flag de velocidade do gesto de tocar duas vezes
BTN_TOOL_TRIPLETAP Flag de velocidade de tocar três vezes com um gesto
Subtabela H: atalhos de aplicativos
Código Ação de destino
KEY_WWW Inicia o navegador da Web padrão.
KEY_MAIL Abre o cliente de e-mail padrão
KEY_BOOKMARKS Abre a lista de favoritos do navegador.
KEY_CALC Abre a calculadora
KEY_FILE Abre o explorador de arquivos locais.
KEY_EDIT Gatilho de edição de documento
KEY_NEW Documento: criar novo gatilho
KEY_OPEN Acionador de abertura de documento
KEY_SAVE Acionador de tarefa de salvamento de arquivo
KEY_CLOSE Acionador de tarefa de fechamento de arquivo
KEY_PRINT Acionador de tarefa de impressão de arquivo
KEY_COPY Ação de copiar para o buffer da área de transferência
KEY_PASTE Ação de inserção do buffer da área de transferência
KEY_CUT Ação de corte do buffer da área de transferência
KEY_UNDO Ação de desfazer do buffer da área de transferência
KEY_REDO Refazer ação do buffer da área de transferência
KEY_CANCEL Gatilho do processo de cancelamento do buffer
KEY_FIND Utilitário de pesquisa de documentos
KEY_REFRESH Utilitário de atualização de documentos
KEY_EXIT Utilitário de fechamento de documentos
KEY_DOCUMENTS Lançamento do portal de documentos do sistema
KEY_HOMEPAGE Inicia o navegador da página inicial.
KEY_FAVORITES Abre o portal de favoritos do navegador.
KEY_CHAT Inicia o programa de mensagens instantâneas.
KEY_EMAIL Gatilho de lançamento de e-mail alternativo
KEY_FINANCE Abrir utilitário de ações/finanças
KEY_SPORT Abrir o utilitário de acompanhamento de esportes
KEY_SHOP Abrir portal de compras digital
KEY_PLAYER Abrir o player de mídia principal
KEY_MP3 Abra o MP3 player principal
KEY_TEXT Abrir o editor de texto padrão
KEY_LIST Abrir o utilitário de checklist
KEY_MEMO Abrir o utilitário de bloco de notas / memorando
KEY_CALENDAR Abre o portal de agenda / calendário
KEY_DIRECTORY Abre o diretório de endereços do sistema
KEY_COMPUTER Abre o explorador de especificações
KEY_TV / KEY_TV2 Lançamento do portal de televisão
KEY_RADIO Inicia o utilitário de rádio.
KEY_CD / KEY_DVD Ativa o leitor de unidade óptica.
KEY_AUDIO / KEY_VIDEO Acessa especificações de mídia.
KEY_TUNER Configura receptores/sintonizadores.
KEY_SAT / KEY_SAT2 Configura feeds de satélite.
KEY_TAPE Tocar mídia de fita
KEY_VCR Reproduzir feed do player de VCR
KEY_VCR2 Reproduzir feed do player VCR 2
KEY_AUX Entradas de porta de mídia auxiliar
KEY_SETUP Menu de configuração
KEY_PROG1 a _PROG4 Chaves de programa definidas pelo usuário
KEY_ZOOM Alternância de zoom na janela de visualização
KEY_MODE Seleção do modo de janela de visualização
KEY_KEYBOARD Mostrar/ocultar teclado virtual
KEY_LANGUAGE Mudar o idioma da faixa de áudio
KEY_TITLE Abrir opções de título de mídia
KEY_SUBTITLE Ativar/desativar a interface de legendas
KEY_ANGLE Mudar os ângulos da câmera de vídeo
KEY_EPG Abrir o guia da programação eletrônica
KEY_PVR Abrir o gravador de vídeo pessoal
KEY_MHP Abrir plataforma de mídia doméstica
KEY_CHANNEL Abrir canais do sintonizador de TV
KEY_CHANNELUP Aumentar o canal de TV
KEY_CHANNELDOWN Ajustar o canal de TV para baixo
KEY_RED Botão interativo vermelho
KEY_GREEN Botão interativo verde
KEY_YELLOW Botão interativo amarelo
KEY_BLUE Botão interativo azul
KEY_FIRST Selecionar a primeira opção de item
KEY_LAST Selecionar a opção "Último item"
KEY_NEXT Selecionar a próxima opção de faixa
KEY_PREVIOUS Selecionar a opção de faixa anterior
KEY_RESTART Reiniciar o loop da faixa de mídia
KEY_SLOW Opção de reprodução em câmera lenta
KEY_AB Loop de repetição de sequência A-B
KEY_PLAYCD Comando de reprodução do CD player
KEY_PAUSECD Comando de pausa do CD
KEY_STOPCD Comando de parada do CD
KEY_DIGITS Comando de entrada do teclado digital
KEY_TEEN Opção de valores para adolescentes no teclado numérico
KEY_TWEN Opção de valores de twen do teclado
KEY_DEL_EOL Excluir até o fim do buffer de linha
KEY_DEL_EOS Excluir até o fim do buffer de tela
KEY_INS_LINE Inserir novo buffer de linha
KEY_BRL_DOT1 a _DOT8 Entradas de botões da linha braille
KEY_VOICECOMMAND Inicia o app de assistente por voz
KEY_SELECTIVE_SCREEN Aciona o corte de tela regional
KEY_BATTERY Consulta notificações de bateria
KEY_STAR / KEY_SHARP Símbolos do teclado de telefone
KEY_PLUS Teclado de telefone com símbolo de mais
KEY_INFO Mostrar sobreposição do painel de informações
KEY_TIME Mostrar o horário atual
KEY_VENDOR Consulta as especificações do fornecedor
KEY_ARCHIVE Abre o utilitário de arquivamento local
KEY_PROGRAM Configura parâmetros do programa
KEY_POWER2 Aciona a energia de backup alternativa

EV_ABS: eventos de movimento absoluto

O tipo de evento EV_ABS é crucial para simular toques precisos, gestos de arrastar e soltar, ações de pinça multitoque e ajustes de joystick. As coordenadas absolutas abaixo do mapa correspondem diretamente à resolução da tela física.

Código Intervalo de coordenadas Descrição
ABS_MT_TRACKING_ID -1 ou ≥0 ID de rastreamento; -1 encerra o toque
ABS_MT_POSITION_X 0 a 1767 Coordenada X (Pixel Fold)
ABS_MT_POSITION_Y 0 a 2207 Coordenada Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR pixels Largura do eixo principal da área de toque
ABS_MT_TOUCH_MINOR pixels Largura do eixo menor da área de toque
ABS_MT_WIDTH_MAJOR pixels Largura do eixo principal da ferramenta
ABS_MT_WIDTH_MINOR pixels Largura do eixo secundário da ferramenta
ABS_MT_ORIENTATION 0 a 255 Ângulo de orientação do contato
ABS_MT_PRESSURE 0 a 255 Magnitude da força de contato
ABS_MT_DISTANCE mm Distância de passar o cursor da tela
ABS_MT_TOOL_TYPE 0 a 2 0=dedo, 1=caneta, 2=lápis
ABS_MT_BLOB_ID integer Identificador do blob de contato
ABS_MT_TOOL_X pixels Coordenada da posição X da ferramenta
ABS_MT_TOOL_Y pixels Coordenada da posição Y da ferramenta
ABS_MT_SLOT 0 a N Slot ativo (protocolo B)
ABS_X / _Y / _Z analógico Eixos de coordenadas do joystick
ABS_RX / _RY / _RZ analógico Eixos de rotação do joystick
ABS_THROTTLE / _BRAKE analógico Pedais e controles de direção
ABS_HAT0X / _HAT0Y -1 / 0 / 1 Chapéu do botão direcional e interruptores de POV
ABS_PRESSURE 0 a 255 Nível de força da stylus / ponteiro
ABS_DISTANCE mm Distância de passar o cursor (caneta stylus)
ABS_TILT_X / _TILT_Y graus Ângulos de inclinação da stylus
ABS_VOLUME analógico Níveis de volume do controlador

A interação por toque do Android é impulsionada por protocolos multitoque (MT). Os emuladores modernos implementam o Protocolo A (sem estado, enviando pacotes de contato separados por marcas de sincronização) e o Protocolo B (com estado, atribuindo contatos a slots de rastreamento dedicados). O protocolo B permite o acompanhamento eficiente de vários toques simultâneos para gestos como pinça para zoom.

EV_REL e EV_SW: movimento e interruptores de hardware

A categoria de evento EV_REL gerencia mudanças relativas de ponteiro ou coordenadas, que são usadas principalmente para emular movimentos externos do mouse ou rolagem de rodas. A categoria de evento EV_SW gerencia chaves de dispositivos físicos, como se um smartphone dobrável ou tablet está dobrado ou se um hardware de áudio externo está inserido.

Código Valores Descrição
REL_X Delta Movimento horizontal do cursor
REL_Y Delta Movimento vertical do cursor
SW_LID 0/1 Status da tampa do laptop (0=Open, 1=Closed)
SW_TABLET_MODE 0/1 Status do modo tablet (0=Desativado, 1=Ativo)
SW_HEADPHONE_INSERT 0/1 Status da entrada para fone de ouvido (0=Out, 1=In)
SW_MICROPHONE_INSERT 0/1 Status da entrada para fone de ouvido do microfone (0=Out, 1=In)
Sintaxe de envio de comandos

Para enviar esses códigos, formate o comando do console com tipos, códigos e valores separados por dois-pontos. É possível enfileirar várias mudanças de coordenadas em uma única string. É fundamental sempre adicionar uma marca de sincronização final (EV_SYN:0:0) para indicar que o framework do emulador precisa agrupar e processar essas entradas juntas.

Exemplos de gestos e programação de eventos

Como o Telnet permite enviar parâmetros de várias partes, é possível simular sequências de gestos físicos realistas. Confira abaixo as estruturas de script de evento bruto para automatizar gestos do console do host.

Simular um toque na tela

Para fazer um toque limpo na tela em uma coordenada de destino, atribua um ID de rastreamento, especifique as coordenadas X e Y na tela, simule o toque, sincronize e solte.

# 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
Como simular uma rolagem vertical (deslizar)

Para executar um gesto de deslizar para rolar, mantenha o contato pressionado na coordenada inicial, envie frames de coordenadas de movimento intermediário e solte no 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
Simular um gesto de pinça para aplicar zoom

Para acionar um zoom de dois dedos, use slots MT ativos (0 e 1) para rastrear e coordenar duas coordenadas de toque simultâneas que se afastam uma da outra.

# 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
Como simular uma troca de conexão de fones de ouvido

Simule inserções ou remoções de entrada para fone de ouvido para testar as chaves de roteamento de áudio. Um valor de 1 representa a inserção do conector, e 0 é a remoção do fone de ouvido.

# 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
Descobrindo códigos de eventos do console em um dispositivo real

Para descobrir a sequência exata de sintaxe de evento para qualquer ação personalizada ou gesto de botão, conecte-se via adb shell e execute o utilitário de diagnóstico getevent. À medida que você interage com a GUI do emulador, o console imprime os códigos, tipos e posições exatos dos 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
  • Mensagem de texto do evento: envia uma string de caracteres que simulam pressionamentos de tecla. A mensagem precisa ser uma string UTF-8. As postagens Unicode são mapeadas de maneira reversa de acordo com o teclado do dispositivo atual, e os caracteres sem suporte são descartados silenciosamente.

Controles de estado de energia

  • power display: mostra o estado da bateria e do carregador.

  • power ac {on| off}: define o estado de carregamento CA como ativado ou desativado.

  • power status {unknown| charging| discharging| not-charging| full}: muda o status da bateria conforme especificado.

  • power present {true| false}: define o estado de presença da bateria.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: define o estado de integridade da bateria.

  • power capacity percent: define o estado da capacidade da bateria restante como uma porcentagem de 0 a 100.

Status da conexão de rede (somente Ethernet e celular)

  • status da rede: verifica o status da rede e as características atuais de atraso e velocidade.

  • network delay latency Modifica a latência da rede emulada.

    O emulador permite simular vários níveis de latência de rede para que você possa testar o app em um ambiente mais próximo de condições reais de execução. Você pode definir um nível de latência ou um intervalo na inicialização do emulador ou usar o console para mudar a latência enquanto o app está sendo executado no emulador.

    O formato de latência de rede é um dos seguintes (os números estão em milissegundos):

    Formato de latência de rede:

  • gprs: GPRS, que usa um intervalo de latência de no mínimo 150 e no máximo 550.

  • edge: EDGE/EGPRS, que usa um intervalo de latência de no mínimo 80 e no máximo 400.

  • umts: UMTS/3G, que usa um intervalo de latência de no mínimo 35 e no máximo 200.

  • none: sem latência.

  • num: emula a latência especificada em milissegundos.

  • min:max: emula o intervalo de latência especificado.

    Para definir a latência na inicialização, use a opção de emulador -netdelay com um valor de latência compatível. Exemplos:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Para fazer mudanças no atraso da rede enquanto o emulador está em execução, conecte-se ao console e use o comando network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed O emulador permite simular várias taxas de transferência de rede. Você pode definir uma taxa de transferência ou um intervalo na inicialização do emulador ou usar o console para mudar a taxa enquanto o app está sendo executado no emulador.

    O formato da velocidade da rede é um dos seguintes (os números estão em kilobits/s):

    Formato de velocidade da rede:

  • gsm: GSM/CSD, que usa uma velocidade de 14,4 de upload e 14,4 de download.

  • hscsd: HSCSD, que usa uma velocidade de 14,4 de upload e 43,2 de download.

  • gprs: GPRS, que usa uma velocidade de 40,0 de upload e 80,0 de download.

  • edge: EDGE/EGPRS, que usa uma velocidade de 118,4 de upload e 236,8 de download.

  • umts: UMTS/3G, que usa uma velocidade de 128,0 de upload e 1.920 de download.

  • hsdpa: HSDPA, que usa uma velocidade de 348 de upload e 14.400 de download.

  • lte: LTE, que usa uma velocidade de 58.000 de upload e 173.000 de download.

  • evdo: EVDO, que usa uma velocidade de 75.000 de upload e 280.000 de download.

  • full: velocidade ilimitada, mas depende da velocidade de conexão do seu computador.

  • num: define uma taxa exata em kilobits/s usada para upload e download.

  • up:down: define taxas exatas em kilobits/s para upload e download separadamente.

    Para definir a velocidade da rede na inicialização do emulador, use a opção de emulador -netspeed. Exemplos:

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

    Para fazer mudanças na velocidade da rede enquanto o emulador está em execução, conecte-se ao console e use o comando network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Envia pacotes para um arquivo. A lista a seguir descreve os parâmetros e valores relacionados:

    Observação:a partir do Android Emulator 36.5 e versões mais recentes, o tráfego de conexão Wi-Fi é processado pelo netsim por padrão. O comando do console de captura de rede captura apenas o tráfego celular/WAN legado roteado pela pilha slirp do QEMU. Para capturar pacotes de rede Wi-Fi, Bluetooth ou avançados em versões modernas do emulador, consulte Capturar tráfego de rede no guia de rede avançada do emulador.

  • start file: começa a capturar pacotes de rede. Por segurança, o arquivo precisa ser um nome de arquivo simples (sem separadores de caminho, como /, e sem ..). O arquivo de captura de pacote será salvo no diretório de conteúdo do AVD, na pasta console_out/ (por exemplo, ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: para de enviar pacotes para o arquivo especificado.

Emulação de telefonia

O emulador Android inclui os próprios modems emulados GSM e CDMA que permitem simular funções de telefonia. Por exemplo, com o GSM, é possível simular chamadas de entrada, além de estabelecer e encerrar conexões de dados. Com o CDMA, você informa uma fonte de assinatura e a lista de roaming preferencial. O sistema Android processa ligações simuladas exatamente como faria com as reais. O emulador não tem suporte a áudio de ligações.

  • gsm {call| accept| cancel| busy} phonenumber Os parâmetros gsm são os seguintes:

    • call: simula uma ligação recebida de um número de telefone.
    • accept: aceita uma chamada recebida de um número de telefone e muda o estado da chamada para ativo. Você só pode mudar o estado de uma chamada para "ativa" quando o estado atual é "em espera" ou "em espera".
    • cancel: encerra uma ligação recebida de ou realizada para phonenumber.
    • busy: encerra uma chamada de saída para um número de telefone e muda o estado da chamada para ocupado. Você só pode mudar o estado de uma chamada para ocupado quando o estado atual é aguardando.
  • gsm {data| voice} state O comando de estado de dados muda o estado da conexão de dados GPRS, e o comando de estado de voz muda o estado da conexão de voz GPRS, da seguinte maneira:

    • unregistered: nenhuma rede disponível
    • home: em rede local, sem roaming
    • roaming: em rede com roaming
    • searching: pesquisando redes
    • denied: somente chamadas de emergência
    • off: igual a "unregistered".
    • on: igual a "home".
  • gsm hold: muda o estado de uma chamada para em espera. Você só pode mudar o estado de uma chamada para espera quando o estado atual é ativo ou aguardando.

  • gsm list: lista todas as chamadas de entrada e de saída e os estados delas.

  • gsm status: informa o estado atual de voz/dados GSM. Os valores são aqueles descritos para os comandos de voz e dados.

  • gsm signal {rssi| ber} Muda a intensidade do sinal relatado (rssi) e a taxa de erros de bit (ber) nos próximos 15 segundos de atualização. A lista a seguir descreve os parâmetros e valores relacionados:

    • rssi: o intervalo é de 0 a 31 e 99 para desconhecido.
    • ber: o intervalo é de 0 a 7, e 99 para desconhecido.
  • gsm signal-profile num: define o perfil da intensidade do sinal. "num" é um número de 0 a 4.

  • cdma ssource source Define a origem da assinatura CDMA atual, em que "source" é uma lista de permissões baseada em rede que contém os assinantes da operadora CDMA e os valores correspondentes, da seguinte maneira:

    • nv: lê a assinatura da RAM não volátil.
    • ruim: lê a assinatura do Removable User Identity Module (R-UIM).
  • cdma prl_version version: despeja a versão atual da lista de roaming preferencial (PRL). O número da versão se destina ao banco de dados da PRL que contém informações usadas durante o processo de seleção e aquisição do sistema.

Gerenciar sensores no emulador

Esses comandos se referem aos sensores que estão disponíveis no AVD. Além de usar o comando de sensor, você pode consultar e ajustar as configurações no emulador na tela "Sensores virtuais", nas guias "Acelerômetro" e "Sensores adicionais".

  • sensor status: lista todos os sensores e os status deles.

  • sensor get sensor-name: acessa as configurações de sensor-name. O exemplo a seguir acessa o valor do sensor de aceleração:

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

    Os valores de aceleração separados por dois pontos(:) referem-se às coordenadas x, y e z dos sensores virtuais.

  • sensor set sensor-name value-x:value-y:value-z: define os valores para sensor-name. O exemplo a seguir define o sensor de aceleração com os valores de x, y e z separados por dois pontos.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Emulação de SMS

  • sms send sender-phone-number textmessage Gera um SMS recebido emulado. A lista a seguir descreve os parâmetros e valores relacionados:

    • sender-phone-number: contém uma string numérica arbitrária.
    • textmessage: é a mensagem SMS.

    O exemplo a seguir envia a mensagem "olá" para o número de telefone 4085555555:

    sms send 4085555555 hi there
    

O console encaminha a mensagem SMS para o framework do Android, que a transmite para um app no emulador que processa SMS, como o app Mensagens. Se você transmitir 10 números, eles vão ser formatados pelo app como um número de telefone. Sequências numéricas mais longas ou mais curtas são exibidas da maneira como você as envia.

Simulação de impressão digital

  • finger touch fingerprint-id: simula um dedo tocando o sensor.

  • finger remove: simula um dedo deixando o sensor.

Para instruções sobre como usar esses comandos, consulte a seção a seguir sobre simulação e validação de impressão digital.

Gravador de tela

O comando de gravação de tela permite capturar arquivos de vídeo de alta qualidade da tela física do emulador diretamente do sistema host. Isso é muito útil para pipelines de integração contínua e relatórios de bugs automatizados.

  • screenrecord {start| stop} file Inicia ou interrompe o processo de gravação da tela.
    • start file: inicia a gravação de vídeo. O arquivo de saída precisa terminar com a extensão obrigatória .webm. O vídeo capturado é salvo diretamente no diretório de saída do console do AVD: ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: interrompe o processo de gravação de tela ativo.

Automação e macro

O subsistema de automação permite que os desenvolvedores gravem transições de estado de macro no dispositivo virtual em execução e as reproduzam para executar fluxos de teste automatizados.

  • automation {record| stop-record| play| stop-play} Gerencia gravações de macros automatizadas.
    • record: inicia a gravação de mudanças de estado e entradas do dispositivo.
    • stop-record: interrompe a sessão de gravação de macro atual.
    • play: inicia a reprodução de uma sequência de macro gravada.
    • stop-play: interrompe a sequência de reprodução de macro ativa.

Física (6DoF)

Os comandos de física gerenciam a verdade fundamental de registro de posturas espaciais para modelos de movimento físico de seis graus de liberdade (6DoF), que são usados para simular o rastreamento avançado de movimento.

  • physics {record-gt| stop} Gerencia gravações de modelos de postura física.
    • record-gt: começa a gravar dados de movimento 6DoF de verdade absoluta.
    • stop: interrompe o processo de gravação da verdade fundamental atual.

Controles avançados de dispositivos

Esta seção agrega endpoints de comando do console altamente especializados para configurações avançadas de emulação, incluindo proxies de rede, configurações de vários monitores, substituições de renderização e depuração direta do hipervisor.

  • multidisplay {add| del} Adiciona ou exclui monitores virtuais secundários para testar configurações de várias telas. Observação:monitores secundários não são compatíveis com perfis de dobra, como o Pixel Fold ou o emulador redimensionável.

  • proxy {set| clear} Configura o encaminhamento de proxy de rede de forma programática no console.

    • set host port: Configura as configurações de proxy de destino.
    • clear: redefine as configurações de proxy para o padrão. Observação:as operações de definição de proxy falham em ambientes de execução sem interface gráfica.
  • virtualscene-image {wall| table} image_path Personaliza as paredes de fundo ou as mesas horizontais mostradas na transmissão da câmera de cena virtual com um arquivo de imagem do usuário personalizado.

  • resize-display scale Ajusta dinamicamente a resolução da tela entre escalas predefinidas. Observação:os ajustes de resolução não são compatíveis com configurações headless.

  • nodraw {on| off} Desativa a renderização física da GUI na tela do host para reduzir a memória do sistema e a carga da GPU durante execuções de automação sem interface gráfica em segundo plano de alto volume.

  • grpc port Configura o controle programático avançado de dispositivos em endpoints de porta gRPC personalizados.

  • qemu monitor Fornece acesso direto ao terminal interativo do console do hipervisor subjacente. Esse comando só pode ser inserido em sessões ativas do console Telnet.

  • icebox track pid Ativa snapshots automáticos do sistema quando o processo do app especificado passa por uma exceção ou falha não processada.

  • phonenumber number Define o número de telefone local virtual do dispositivo de destino.

Interface programática do gRPC

As versões modernas do emulador oferecem suporte a uma interface programática gRPC avançada além do console Telnet legado. Embora o console Telnet seja ótimo para sessões interativas rápidas ou scripts simples, a interface gRPC foi projetada para controle automatizado de alto desempenho, seguro e robusto em ambientes de integração contínua (CI) e sem interface gráfica. Ao oferecer endpoints de serviço diretos, o gRPC elimina a necessidade de analisar fluxos de texto, gerenciar handshakes de sessão de terminal ou expor portas de localhost não criptografadas.

Para ajudar a escolher entre o console Telnet legado e a interface programática gRPC moderna, confira a comparação a seguir de desempenho, segurança e recursos:

Recurso Console Telnet Interface gRPC
Ideal para Depuração manual, sessões interativas. CI/CD sem interface gráfica, plataformas de teste automatizadas pesadas.
Velocidade Mais lento: sobrecarga de texto, latência de conexão. HTTP/2 otimizado e multiplexado, proto rápido.
Segurança Não criptografado; portas locais (5554–5585). Pode ser protegido por TLS e funciona em redes.
Streams Não compatível; apenas solicitação-resposta. Streams para logcat, captura de áudio do visitante.
Mídia Grava arquivos de saída no disco do host/convidado. Buffers binários diretos por fio.
SO convidado Restrito a comandos fixos do emulador. Executa comandos nativos do shell bash do convidado.

Como iniciar e chamar o gRPC

Para usar os endpoints gRPC, inicie o Android Emulator na linha de comando e inclua a flag -grpc, especificando a porta de loopback de destino.

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

Depois que o emulador estiver em execução com o serviço gRPC ativado, você poderá fazer chamadas de RPC programáticas. Para testes de linha de comando, use o utilitário grpcurl para se comunicar com os serviços do emulador. Todas as solicitações são formatadas em JSON e enviadas em texto simples.

# 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

Mapeamento do console Telnet para o serviço gRPC

A tabela de referência a seguir mapeia os comandos legados do console Telnet para os serviços e métodos gRPC correspondentes, indicando como automatizar interações comuns de dispositivos virtuais de maneira programática:

Categoria Comando Telnet legado Serviço / método gRPC
Status ping EmulatorController/getStatus
Status avd name incubating.AvdService/getAvdInfo
Status kill EmulatorController/setVmState
Status restart EmulatorController/setVmState
Alimentação power display EmulatorController/getBattery
Alimentação power capacity EmulatorController/setBattery
Localização geográfica geo fix EmulatorController/setGps
Sensores sensor set incubating.SensorService/setSensor
Biometria finger touch EmulatorController/sendFingerprint
Postura posture EmulatorController/setPosture
Postura physics / fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Chamada GSM gsm call EmulatorController/sendPhone
Chamada GSM phonenumber EmulatorController/setPhoneNumber
Redirecionar redir add Waterfall/ForwardPort
Entrada event send EV_KEY EmulatorController/sendKey
Entrada event send EV_ABS EmulatorController/sendTouch
Mídia screenrecord incubating.ScreenRecording
Renderização nodraw EmulatorController/setDisplayMode
Snapshots avd snapshot list SnapshotService/ListSnapshots
Snapshots avd snapshot load/save SnapshotService/LoadSnapshot

Comandos programáticos exclusivos do gRPC

A interface gRPC oferece vários recursos de ponta que são fisicamente impossíveis de executar em conexões legadas do console Telnet. Isso inclui streaming direto de logcat, captura ou injeção de áudio bidirecional, modificações na GUI do host e acesso direto ao shell.

Serviço / método gRPC Parâmetro Capacidade
streamLogcat {"maxLines": 100} Transmite as saídas do logcat do sistema convidado
streamAudio {} Transmite o áudio do alto-falante pelo fio
injectAudio {"audio": "..."} Insere streams de áudio do microfone.
UiController {"theme": "DARK"} Modifica temas de janela da janela do host.
Waterfall/Exec {"cmd": "ls"} Executa comandos nativos do shell do SO convidado

Simulação e validação de impressão digital

Figura 1. Tela de autenticação de impressão digital.

Use o comando "finger" para simular e validar a autenticação de impressão digital para seu app. Você precisa das Ferramentas do SDK 24.3 ou mais recente e do Android 6.0 (nível da API 23) ou mais recente.

Para simular e validar a autenticação de impressão digital, siga estas etapas:

  1. Se você ainda não tem um ID de impressão digital, cadastre uma nova impressão digital no emulador selecionando Configurações > Segurança > Impressão digital e seguindo as instruções de cadastro.

  2. Configure seu app para aceitar a autenticação por impressão digital. Quando essa configuração é concluída, o dispositivo exibe a tela de autenticação de impressão digital.

  3. Enquanto o app estiver exibindo a tela de autenticação de impressão digital, vá para o console e insira o comando finger touch e o ID de impressão digital que você criou. Isso simula um toque do dedo.

  4. Em seguida, insira o comando finger remove para simular a elevação do dedo. Seu app deve responder como se o usuário tivesse tocado e elevado o dedo do sensor de impressão digital.