Отправка консольных команд эмулятора

Каждое запущенное виртуальное устройство предоставляет консоль, которая позволяет запрашивать и управлять средой эмулируемого устройства. Например, вы можете использовать консоль для управления перенаправлением портов, характеристиками сети и событиями телефонии, пока ваше приложение работает на эмуляторе.

Для выполнения следующих команд необходимо, чтобы у вас уже был запущен эмулятор. Дополнительную информацию о запуске эмулятора см. в разделах «Запуск приложений в эмуляторе Android» и «Запуск эмулятора из командной строки» .

Запуск и остановка консольной сессии

Для доступа к консоли и ввода команд из окна терминала используйте Telnet для подключения к консольному порту и укажите свой токен аутентификации. Каждый раз, когда на консоли отображается OK , она готова принимать команды. Обычной командной строки нет.

Для подключения к консоли запущенного виртуального устройства:

  1. Откройте окно терминала и введите следующую команду:

    telnet localhost console-port
    

    В заголовке окна эмулятора отображается номер консольного порта при запуске в отдельном окне, но не при запуске в окне инструментов. Например, заголовок окна для эмулятора, использующего консольный порт 5554, может быть Pixel8_API_34:5554. Кроме того, команда adb devices выводит список запущенных виртуальных устройств и номера их консольных портов. Для получения дополнительной информации см. раздел «Запрос устройств» .

    Примечание: Эмулятор принимает соединения на портах 5554–5585 и принимает соединения только с локального хоста.

  2. После того, как в консоли отобразится OK , введите команду auth auth_token .

    Прежде чем вы сможете вводить консольные команды , эмулятору потребуется аутентификация. auth_token должен совпадать с содержимым файла .emulator_console_auth_token в вашем домашнем каталоге.

    Если этот файл не существует, команда telnet localhost console-port создаст его, и он будет содержать случайно сгенерированный токен аутентификации. Чтобы отключить аутентификацию, удалите токен из файла .emulator_console_auth_token или создайте пустой файл, если он не существует.

  3. После подключения к консоли введите консольные команды .

    Введите help , help command или help-verbose , чтобы увидеть список консольных команд и узнать о конкретных командах.

  4. Для выхода из консольной сессии введите quit или exit .

Вот пример сессии:

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

Команды "выстрелил и забыл"

Если вам не нужно открывать сессию, используйте ярлык adb emu , который выполнит команду и немедленно вернет управление вызывающей оболочке:

adb emu command commandParameter

Вызов команды adb emu подключается к доступному эмулятору. Если у вас одновременно запущено несколько эмуляторов, необходимо передать серийный номер конкретного целевого эмулятора:

adb -s emulator-serial emu command commandParameter

Справочник команд эмулятора

В следующих списках описаны команды консоли эмулятора с указанием их параметров и значений:

Общие команды

  • avd {stop| start| status| name} Запрашивает, контролирует и управляет виртуальным устройством следующим образом:

    • stop : Останавливает выполнение программы на устройстве.
    • start : Запускает выполнение программы на устройстве.
    • status : Запрашивает состояние виртуального устройства, которое может быть запущено или остановлено.
    • name : Запрашивает имя виртуального устройства.
  • avd snapshot {list| save name| load name| delete name} Сохраняет и восстанавливает состояние устройства в снимках следующим образом:

    • list : Отображает список всех сохраненных снимков.
    • save name : Сохраняет снимок под указанным именем.
    • load name : Загружает указанный снимок.
    • delete name : Удаляет указанный снимок.

    В следующем примере сохраняется снимок с именем firstactivitysnapshot :

    avd snapshot save firstactivitysnapshot
    
  • fold : Складывает устройство, чтобы отобразить меньшую конфигурацию экрана, если устройство складное и в данный момент развернуто.

  • unfold : Разворачивает устройство, чтобы отобразить увеличенный экран, если устройство складное и в данный момент сложено.

  • kill : Завершает работу виртуального устройства.

  • ping : Проверяет, запущено ли виртуальное устройство.

  • rotate : Поворачивает AVD против часовой стрелки с шагом в 45 градусов.

Вызвать сбой эмулятора

  • crash : Вызывает сбой эмулятора во время выполнения приложения.

  • crash-on-exit : Вызывает сбой эмулятора при закрытии приложения.

Отладочные теги

  • Отладочные теги ... : Включает или отключает отладочные сообщения из определенных частей эмулятора. Параметр tags должен быть значением из списка отладочных тегов, который отображается при выполнении emulator -help-debug-tags . Для получения дополнительной информации о параметре -help-debug-tags см. таблицу часто используемых параметров. Следующий пример включает радиотег:

    debug radio
    

Перенаправление портов

  • redir list : Отображает текущее перенаправление портов.

  • redir add protocol:host-port:guest-port добавляет новое перенаправление портов следующим образом:

    • Протокол : Должен быть либо TCP, либо UDP.
    • host-port : Номер порта, который необходимо открыть на хосте.
    • guest-port : Номер порта, на который эмулятор будет перенаправлять данные.
  • redir del protocol:host-port Удаляет перенаправление порта.

    • Протокол : Должен быть либо TCP, либо UDP.
    • host-port : Номер порта, который необходимо открыть на хосте.

Географическое местоположение

Устанавливает географическое местоположение, передаваемое приложениям, работающим внутри эмулятора, путем отправки GPS-сигнала в эмулятор.

Как только виртуальное устройство будет запущено, вы можете выполнить одну из следующих команд определения местоположения. Эмулятор устанавливает введенное вами местоположение, создавая фиктивный поставщик местоположения. Этот поставщик отвечает на запросы о местоположении, установленные приложениями, и передает местоположение в LocationManager. Любое приложение может запросить у LocationManager текущее местоположение GPS для эмулируемого устройства, вызвав метод LocationManager.getLastKnownLocation("gps") .

  • geo fix longitude latitude [altitude] [satellites] [velocity] : Отправляет простой GPS-сигнал в эмулятор. Укажите долготу и широту в десятичных градусах. Используйте число от 1 до 12, чтобы указать количество спутников, используемых для определения местоположения, а также укажите высоту в метрах и скорость в узлах.

  • Команда `geo nmea sentence` : отправляет NMEA 0183-сообщение на эмулируемое устройство так, как если бы оно было отправлено с эмулируемого GPS-модема. Начинайте сообщение с `$GP`. В настоящее время поддерживаются только сообщения `$GPGGA` и `$GPRCM`. Следующий пример — сообщение GPGGA (Global Positioning System Fix Data), которое получает данные о времени, местоположении и местоположении для 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
    

Фальшивые аппаратные события

Подсистема аппаратных событий эмулятора позволяет имитировать практически любое физическое взаимодействие с устройством. Это включает в себя физические кнопки, сенсорное управление/жесты на экране, поворотные регуляторы, ввод с джойстика и аппаратные переключатели.

  • Типы событий : Отображает все фиктивные типы событий. Для событий, имеющих коды, количество кодов указано в скобках справа. Пример вывода:

    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 type[:code]:[value] [...] : Отправляет одно или несколько фиктивных событий с необязательными кодами и значениями кодов.

EV_KEY — Ссылки на коды ключей

Тип события EV_KEY используется для имитации нажатий и отпусканий кнопок. В следующих таблицах обширный список поддерживаемых кодов клавиш разделен на логические категории. Для каждого кода клавиши отправка значения 1 имитирует нажатие, а значение 0 — отпускание. Значение 2 представляет собой повтор нажатия клавиши.

Подтаблица A: Системные клавиши Android
Код Описание
KEY_HOME триггер кнопки «Домой»
KEY_BACK Кнопка спуска сзади
KEY_MENU Кнопка меню (переполнение)
KEY_POWER Кнопка питания (нажатие/длительное нажатие)
KEY_VOLUMEUP кнопка увеличения громкости
KEY_VOLUMEDOWN кнопка уменьшения громкости
KEY_CAMERA Физическая кнопка спуска затвора камеры
KEY_FOCUS Автофокус камеры, затвор
KEY_SEARCH кнопка поиска (триггер)
KEY_SLEEP команда сна запускает
KEY_WAKEUP Команда пробуждения запускает
KEY_NOTIFICATION Открыть панель уведомлений
KEY_MUTE Отключить вывод звука системы
KEY_MICMUTE Отключить микрофонный вход
KEY_BRIGHTNESSDOWN Уменьшите яркость дисплея.
KEY_BRIGHTNESSUP Увеличьте яркость дисплея
KEY_PHONE Откройте приложение для набора номера по умолчанию.
KEY_SEND Совершить или инициировать телефонный звонок
KEY_HEADSETHOOK Кнопка вызова гарнитуры (ответ/завершение вызова)
KEY_SCREEN активировать команду заставки
KEY_CONFIG Меню системы конфигурации
KEY_SWITCHVIDEOMODE Переключить режим видеосистемы
KEY_KBDILLUMTOGGLE Включить/выключить подсветку клавиатуры
Подтаблица B: Элементы управления воспроизведением и воспроизведением мультимедиа
Код Описание
KEY_PLAYPAUSE Переключение между режимами воспроизведения и паузы
KEY_PLAY Начать воспроизведение мультимедиа
KEY_PAUSECD Приостановить воспроизведение CD
KEY_STOPCD Остановить воспроизведение CD
KEY_NEXTSONG Перейти к следующему треку
KEY_PREVIOUSSONG Перейти к предыдущему треку
KEY_REWIND Перемотать активную дорожку
KEY_FASTFORWARD Активная перемотка вперед
KEY_RECORD Команда запуска записи
KEY_SHUFFLE Переключить воспроизведение в случайном порядке
KEY_REPEAT Включить/выключить повторное воспроизведение
KEY_MEDIA Триггер медиа-клавиши
Подтаблица C: Навигация и общие клавиатуры
Код Описание
KEY_UP Нажатие кнопки "Вверх" на D-pad
KEY_DOWN Нажатие D-pad вниз
KEY_LEFT D-pad Направление влево
KEY_RIGHT D-pad Направление вправо
KEY_PAGEUP Навигация вверх по страницам
KEY_PAGEDOWN Навигация вниз по страницам
KEY_INSERT Вставить клавишу триггера
KEY_DELETE Удалить ключевой триггер
KEY_ENTER Триггер клавиши Enter
KEY_ESC Кнопка Escape (срабатывание клавиши Escape)
KEY_TAB триггер клавиши Tab
KEY_SPACE клавиша пробела
KEY_BACKSPACE клавиша Backspace срабатывает
KEY_CLEAR Очистить входной буфер
KEY_CANCEL Отменить активное действие
KEY_OK Подтвердить/ОК выбор
KEY_SELECT Выберите триггер элемента
KEY_GOTO Пройдите в указанное место.
KEY_HELP Доступ к контексту справки
Подтаблица D: Буквенно-цифровые символы и символы клавиатуры
  • Стандартные буквы алфавита: от KEY_A до KEY_Z (26 кодов).
  • Клавиши цифровой клавиатуры: от KEY_1 до KEY_0 (10 кодов).
Код Символ
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (Цифровая клавиатура)
KEY_KPPLUS + (Цифровая клавиатура)
KEY_KPMINUS - (Цифровая клавиатура)
KEY_KPDOT . Цифровая клавиатура)
KEY_KPSLASH / (Цифровая клавиатура)
KEY_KPENTER Enter (цифровая клавиатура)
KEY_KPEQUAL = (Цифровая клавиатура)
KEY_KPCOMMA , Цифровая клавиатура)
KEY_KPJPCOMMA , Японская раскладка)
KEY_KPLEFTPAREN ( (Цифровая клавиатура)
KEY_KPRIGHTPAREN ) (Цифровая клавиатура)
KEY_KPPLUSMINUS ± (Цифровая клавиатура)
Подтаблица E: Клавиши-модификаторы и функциональные клавиши
  • Стандартные функциональные клавиши: от KEY_F1 до KEY_F24 (24 кода).
Код Описание
KEY_LEFTSHIFT клавиша Левая клавиша Shift (модификатор клавиатуры)
KEY_RIGHTSHIFT клавиша Shift
KEY_LEFTCTRL Левая клавиша Control (модификатор клавиатуры)
KEY_RIGHTCTRL Правая клавиша управления (Ctrl) — модификатор клавиатуры
KEY_LEFTALT клавиша Левая клавиша Alt (модификатор клавиатуры)
KEY_RIGHTALT клавиша Alt (правая клавиша)
KEY_LEFTMETA Левая клавиша Мета/Комман
KEY_RIGHTMETA Правая клавиша Мета/Комман
KEY_CAPSLOCK переключатель Caps Lock на клавиатуре
KEY_NUMLOCK Переключение клавиши Num Lock на клавиатуре
KEY_SCROLLLOCK Переключение клавиатуры Scroll Lock
KEY_COMPOSE Составьте вспомогательный символ
KEY_FN Физическая клавиша FN на клавиатуре
KEY_FN_ESC Комбинации функциональных клавиш
KEY_FN_1 Специальная комбинация клавиш 1
KEY_FN_2 Специальная комбинация клавиш 2
KEY_FN_D Специальная функциональная комбинация клавиш D
KEY_FN_E Специальная функциональная комбинация клавиш E
KEY_FN_F Специальная функциональная комбинация клавиш F
KEY_FN_S Специальная функциональная комбинация клавиш S
KEY_FN_B Специальная функциональная комбинация клавиш B
Подтаблица F: Геймпады и джойстики
Код Описание
BTN_A / BTN_B / BTN_C Кнопки на лицевой панели контроллера A/B/C
BTN_X / BTN_Y / BTN_Z Кнопки на лицевой панели контроллера: X/Y/Z
BTN_START Кнопка меню «Пуск» на геймпаде
BTN_SELECT Кнопка выбора на геймпаде
BTN_MODE переключатель режима контроллера
BTN_TL / BTN_TR Левый/правый плечевой бампер
BTN_TL2 / BTN_TR2 Левый/правый аналоговые триггеры
BTN_THUMBL / BTN_THUMBR Нажатия левого/правого стика
BTN_DPAD_UP Кнопка D-pad, кнопка вверх
BTN_DPAD_DOWN Кнопка D-pad, нижний триггер
BTN_DPAD_LEFT Кнопка геймпада Левый триггер
BTN_DPAD_RIGHT Кнопка геймпада, правый триггер
BTN_THUMB Основной курок джойстика (кнопка для большого пальца)
BTN_TOP / BTN_TOP2 верхние кнопки джойстика
BTN_PINKIE Триггеры на мизинце джойстика
BTN_BASE to _BASE6 Кнопки на базовой платформе джойстика
BTN_DEAD Флаг неактивной мертвой зоны геймпада
BTN_TRIGGER Физический джойстик, ручной курок
BTN_JOYSTICK Универсальный код ввода джойстика
Подтаблица G: Ввод с помощью мыши, сенсорного экрана и стилуса
Код Описание
BTN_MOUSE Универсальное событие указателя мыши
BTN_LEFT Щелчок левой кнопкой мыши
BTN_RIGHT Щелчок правой кнопкой мыши
BTN_MIDDLE Нажмите на среднее колесико прокрутки
BTN_SIDE Боковая кнопка управления навигацией
BTN_EXTRA Дополнительный триггер кнопки мыши
BTN_FORWARD Для перехода к следующему разделу браузера нажмите
BTN_BACK Назад к навигации браузера
BTN_TASK Клавиша переключения системных задач
BTN_TOUCH Обнаружен физический контакт с экраном
BTN_STYLUS Активный стилус с датчиком приближения
BTN_STYLUS2 Вторичный переключатель на стилусе
BTN_TOOL_PEN Идентификатор инструмента «Стилус»
BTN_TOOL_RUBBER Идентификатор инструмента «ластик для стилуса»
BTN_TOOL_BRUSH Идентификатор инструмента «Кисть художника»
BTN_TOOL_PENCIL Идентификатор инструмента «черчилльный карандаш»
BTN_TOOL_AIRBRUSH идентификатор инструмента для аэрографической покраски
BTN_TOOL_FINGER Сенсорный экран, касание пальцем
BTN_TOOL_MOUSE Внешний идентификатор инструмента мыши
BTN_TOOL_LENS Инструмент для оптической лупы
BTN_TOOL_DOUBLETAP Жест двойного нажатия флага скорости
BTN_TOOL_TRIPLETAP Жест тройного нажатия флага скорости
Подтаблица H: Ярлыки приложений
Код Целевое действие
KEY_WWW Запускает веб-браузер по умолчанию.
KEY_MAIL Открывает почтовый клиент по умолчанию
KEY_BOOKMARKS Открывает список закладок браузера
KEY_CALC Открывает утилиту калькулятора
KEY_FILE Открывает проводник локальных файлов
KEY_EDIT триггер редактирования документа
KEY_NEW Документ создает новый триггер
KEY_OPEN Триггер открытия документа
KEY_SAVE Запуск задачи сохранения файла
KEY_CLOSE триггер задачи закрытия файла
KEY_PRINT Запуск задачи печати файла
KEY_COPY действие копирования буфера обмена
KEY_PASTE вставка в буфер обмена
KEY_CUT действие «Вырезать буфер обмена»
KEY_UNDO Отмена действия в буфере обмена
KEY_REDO Повтор действия в буфере обмена
KEY_CANCEL Запуск процесса отмены буфера
KEY_FIND утилита поиска документов
KEY_REFRESH утилита обновления документа
KEY_EXIT утилита закрытия документа
KEY_DOCUMENTS Запуск портала системной документации
KEY_HOMEPAGE Запускает домашнюю страницу браузера.
KEY_FAVORITES Открывает портал избранного в браузере
KEY_CHAT Запуск мессенджера
KEY_EMAIL Альтернативный триггер запуска электронного письма
KEY_FINANCE Открытая акция/финансовая утилита
KEY_SPORT Открытая утилита для отслеживания спортивных результатов
KEY_SHOP Открытый цифровой торговый портал
KEY_PLAYER Открытый основной медиаплеер
KEY_MP3 Открыть основной MP3-плеер
KEY_TEXT Открыть текстовый редактор по умолчанию
KEY_LIST Открыть утилиту для составления контрольных списков
KEY_MEMO Откройте блокнот/заметки.
KEY_CALENDAR Открывает портал календаря/планировщика.
KEY_DIRECTORY Открывает системный адресный каталог
KEY_COMPUTER Открывает оболочку спецификаций
KEY_TV / KEY_TV2 Запуск телевизионного портала
KEY_RADIO Запуск радиоприложения
KEY_CD / KEY_DVD Активирует считыватель оптических приводов
KEY_AUDIO / KEY_VIDEO Доступ к спецификациям носителей
KEY_TUNER Настраивает ресиверы/тюнеры.
KEY_SAT / KEY_SAT2 Настраивает спутниковые каналы
KEY_TAPE Воспроизвести кассетный медиаплеер
KEY_VCR Воспроизвести видеопоток с видеомагнитофона
KEY_VCR2 Воспроизведение видео с двух плееров
KEY_AUX Дополнительные медиавходы
KEY_SETUP Меню настройки конфигурации
KEY_PROG1 to _PROG4 Пользовательские программные клавиши
KEY_ZOOM Переключение масштабирования области просмотра
KEY_MODE Выберите режим просмотра.
KEY_KEYBOARD Показать/скрыть виртуальную клавиатуру
KEY_LANGUAGE Переключить язык звуковой дорожки
KEY_TITLE Открыть параметры заголовка медиафайла
KEY_SUBTITLE Переключить интерфейс субтитров
KEY_ANGLE Изменить ракурс видеокамеры
KEY_EPG Открытая электронная программа передач
KEY_PVR Откройте персональный видеорегистратор
KEY_MHP Открытая мультимедийная домашняя платформа
KEY_CHANNEL Открыть каналы ТВ-тюнера
KEY_CHANNELUP Настройте телеканал на более высокую частоту.
KEY_CHANNELDOWN Переключите телеканал на более низкий канал.
KEY_RED Красная интерактивная кнопка
KEY_GREEN Зеленая интерактивная кнопка
KEY_YELLOW Желтая интерактивная кнопка
KEY_BLUE Синяя интерактивная кнопка
KEY_FIRST Выберите первый вариант
KEY_LAST Выберите последний вариант
KEY_NEXT Выберите следующий трек
KEY_PREVIOUS Выберите предыдущий трек
KEY_RESTART Перезапустить цикл воспроизведения медиатрека
KEY_SLOW Функция замедленной съемки
KEY_AB Петля повторяющейся последовательности AB
KEY_PLAYCD Команда воспроизведения CD-проигрывателя
KEY_PAUSECD Команда паузы CD-проигрывателя
KEY_STOPCD команда остановки CD-проигрывателя
KEY_DIGITS Команда ввода с цифровой клавиатуры
KEY_TEEN опция «Ценности подростков» на клавиатуре
KEY_TWEN Вариант выбора из двух значений на клавиатуре
KEY_DEL_EOL Удалить в конец буфера строки
KEY_DEL_EOS Удалить в конец буфера экрана
KEY_INS_LINE Вставить новый буфер строки
KEY_BRL_DOT1 to _DOT8 Кнопки ввода на брайлевском дисплее
KEY_VOICECOMMAND Запуск приложения голосового помощника
KEY_SELECTIVE_SCREEN Запускает создание региональных скриншотов
KEY_BATTERY Запросы уведомлений о состоянии батареи
KEY_STAR / KEY_SHARP Символы телефонной клавиатуры
KEY_PLUS Телефонная клавиатура, символ плюса
KEY_INFO Показать наложение информационной панели
KEY_TIME Показать текущее время по часам
KEY_VENDOR Запросы к спецификациям поставщика
KEY_ARCHIVE Открывает утилиту локального архива
KEY_PROGRAM Настраивает параметры программы.
KEY_POWER2 Запускает альтернативное резервное питание

EV_ABS — События абсолютного движения

Тип события EV_ABS имеет решающее значение для имитации точных касаний, жестов перетаскивания, многопальцевых действий масштабирования и настроек джойстика. Приведенные ниже абсолютные координаты напрямую соответствуют физическому разрешению экрана.

Код Диапазон координат Описание
ABS_MT_TRACKING_ID -1 или ≥0 Идентификатор отслеживания; -1 конец касается
ABS_MT_POSITION_X 0 до 1767 Координата X (свертка пикселя)
ABS_MT_POSITION_Y 0 до 2207 Координата Y (свертка пикселей)
ABS_MT_TOUCH_MAJOR пиксели Ширина основной оси зоны касания
ABS_MT_TOUCH_MINOR пиксели Ширина малой оси зоны касания
ABS_MT_WIDTH_MAJOR пиксели ширина главной оси инструмента
ABS_MT_WIDTH_MINOR пиксели Ширина малой оси инструмента
ABS_MT_ORIENTATION 0 до 255 Угол ориентации контакта
ABS_MT_PRESSURE 0 до 255 Величина контактной силы
ABS_MT_DISTANCE мм Расстояние от курсора до экрана
ABS_MT_TOOL_TYPE 0 до 2 0 = палец, 1 = ручка, 2 = карандаш
ABS_MT_BLOB_ID целое число Идентификатор контактного блоба
ABS_MT_TOOL_X пиксели Координата X инструмента
ABS_MT_TOOL_Y пиксели Координата Y инструмента
ABS_MT_SLOT 0 до N Активный слот (Протокол B)
ABS_X / _Y / _Z аналоговый координатные оси джойстика
ABS_RX / _RY / _RZ аналоговый оси вращения джойстика
ABS_THROTTLE / _BRAKE аналоговый Педали и органы управления рулевым колесом
ABS_HAT0X / _HAT0Y -1 / 0 / 1 Кнопка D-pad и переключатели POV
ABS_PRESSURE 0 до 255 Уровень силы нажатия стилуса/указателя
ABS_DISTANCE мм Расстояние наведения курсора (стилус)
ABS_TILT_X / _TILT_Y градусы Углы наклона стилуса
ABS_VOLUME аналоговый уровни громкости контроллера

Взаимодействие с сенсорным экраном Android осуществляется с помощью протоколов Multi-touch (MT). Современные эмуляторы реализуют как протокол A (без сохранения состояния, отправка пакетов контактов, разделенных метками синхронизации), так и протокол B (с сохранением состояния, назначение контактов выделенным слотам для отслеживания). Протокол B позволяет эффективно отслеживать несколько одновременных касаний для таких жестов, как масштабирование с помощью щипка.

EV_REL и EV_SW — Датчики движения и аппаратные переключатели

Категория событий EV_REL управляет относительными изменениями указателя или координат, что в основном используется для эмуляции движений внешней мыши или колесика прокрутки. Категория событий EV_SW управляет физическими переключениями устройств, например, сложен ли телефон-раскладушка или планшет, или подключено ли внешнее аудиооборудование.

Код Ценности Описание
REL_X Дельта Горизонтальное перемещение курсора
REL_Y Дельта Вертикальное перемещение курсора
SW_LID 0 / 1 Состояние крышки ноутбука ( 0 = Открыта, 1 = Закрыта)
SW_TABLET_MODE 0 / 1 Состояние режима планшета ( 0 = Выкл., 1 = Активен)
SW_HEADPHONE_INSERT 0 / 1 Состояние разъема для наушников ( 0 = выход, 1 = вход)
SW_MICROPHONE_INSERT 0 / 1 Состояние разъема для микрофона ( 0 = выход, 1 = вход)
Синтаксис диспетчеризации команд

Для отправки этих кодов отформатируйте команду консоли, указав типы, коды и значения, разделенные двоеточиями. Вы можете поставить в очередь несколько изменений координат в одной строке. Важно всегда добавлять метку окончательной синхронизации ( EV_SYN:0:0 ), чтобы указать, что платформа эмулятора должна объединить и обработать эти входные данные вместе.

Примеры создания сценариев событий и жестов.

Благодаря возможности отправки многокомпонентных параметров через Telnet, вы можете имитировать реалистичные последовательности физических жестов. Ниже представлены структуры сценариев событий для автоматизации жестов с консоли вашего хоста.

Имитация касания экрана

Для выполнения чистого касания экрана в целевой точке необходимо присвоить идентификатор отслеживания, указать координаты X и Y на экране, имитировать касание, синхронизировать действия, а затем отпустить.

# 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
Имитация вертикальной прокрутки (свайпа)

Для выполнения жеста прокрутки и смахивания удерживайте палец на начальной точке, отправьте промежуточные кадры координат движения и отпустите в конце.

# 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
Имитация жеста масштабирования "щипком".

Для активации масштабирования двумя пальцами используйте активные слоты MT (0 и 1) для отслеживания и координации двух одновременно движущихся друг от друга координат касания.

# 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
Имитация переключателя подключения наушников

Имитируйте вставку или извлечение разъема для наушников, чтобы проверить работу переключателей маршрутизации звука. Значение 1 означает вставку разъема, а 0 — извлечение наушников.

# 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
Обнаружение кодов событий консоли на реальном устройстве

Чтобы узнать точную последовательность синтаксиса событий для любого пользовательского действия или жеста кнопки, подключитесь через adb shell и запустите диагностическую утилиту getevent . При взаимодействии с графическим интерфейсом эмулятора консоль выведет точные коды событий, их типы и позиции.

# 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
  • Событие текстового сообщения : отправляет строку символов, имитирующих нажатия клавиш. Сообщение должно быть строкой UTF-8. Символы Unicode преобразуются в обратном порядке в соответствии с текущей клавиатурой устройства, а неподдерживаемые символы отбрасываются без уведомления.

Управление состоянием питания

  • Индикатор заряда батареи : отображает состояние батареи и зарядного устройства.

  • power ac {on| off} : Устанавливает состояние зарядки переменным током в положение «вкл.» или «выкл.».

  • Состояние питания {неизвестно| зарядка| разрядка| не заряжается| полностью заряжено} : Изменяет состояние батареи в соответствии с указанными параметрами.

  • Наличие питания {true| false} : Устанавливает состояние наличия батареи.

  • Состояние батареи {неизвестно| хорошее| перегрев| неисправна| перенапряжение| отказ} : Устанавливает состояние батареи.

  • Процент емкости батареи : устанавливает оставшуюся емкость батареи в процентах от 0 до 100.

Состояние сетевого подключения (только для Ethernet и сотовой связи)

  • Состояние сети : Проверяет состояние сети, а также текущие характеристики задержки и скорости.

  • network delay latency изменяет эмулируемую задержку сети.

    Эмулятор позволяет имитировать различные уровни задержки сети, чтобы вы могли тестировать свое приложение в среде, более типичной для реальных условий работы. Вы можете установить уровень или диапазон задержки при запуске эмулятора, или же использовать консоль для изменения задержки во время работы приложения в эмуляторе.

    Формат измерения сетевой задержки может быть одним из следующих (числа указаны в миллисекундах):

    Формат задержки сети:

  • GPRS : протокол GPRS, использующий диапазон задержки от 150 до 550 Мбит/с.

  • edge : EDGE/EGPRS, использующий диапазон задержки от 80 до 400.

  • UMTS : UMTS/3G, использующий диапазон задержки от 35 до 200.

  • нет : Нет задержки.

  • num : Имитирует указанную задержку в миллисекундах.

  • min:max : Имитирует указанный диапазон задержки.

    Для установки задержки при запуске эмулятора используйте параметр эмулятора -netdelay с поддерживаемым значением задержки. Примеры:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Чтобы изменить задержку сети во время работы эмулятора, подключитесь к консоли и используйте команду network delay :

    network delay gprs
    network delay 40 100
    
  • Эмулятор позволяет имитировать различные скорости передачи данных network speed speed . Вы можете установить скорость или диапазон скорости при запуске эмулятора, или же изменить скорость в консоли во время работы приложения в эмуляторе.

    Скорость сети указывается в одном из следующих форматов (числа — килобиты/сек):

    Формат скорости сети:

  • GSM : GSM/CSD, скорость передачи данных 14,4 В на загрузку и 14,4 В на выгрузку.

  • hscsd : HSCSD, использующий скорость 14,4 Мбит/с на загрузку и 43,2 Мбит/с на выгрузку.

  • GPRS : протокол GPRS, обеспечивающий скорость 40 Мбит/с на загрузку и 80 Мбит/с на выгрузку.

  • edge : EDGE/EGPRS, скорость передачи данных составляет 118,4 Мбит/с на загрузку и 236,8 Мбит/с на выгрузку.

  • UMTS : UMTS/3G, использующий скорость 128,0 Мбит/с на загрузку и 1920 Мбит/с на выгрузку.

  • hsdpa : HSDPA, использующий скорость 348,0 Мбит/с на загрузку и 14 400,0 Мбит/с на выгрузку.

  • LTE : LTE, использующий скорость 58 000 Мбит/с на загрузку и 173 000 Мбит/с на выгрузку.

  • evdo : EVDO, использующий скорость 75 000 Мбит/с на загрузку и 280 000 Мбит/с на выгрузку.

  • Полный режим : неограниченная скорость, но зависит от скорости вашего интернет-соединения.

  • num : Задает точную скорость в килобитах в секунду, используемую как для загрузки, так и для скачивания.

  • up:down : Устанавливает точную скорость загрузки и выгрузки в килобитах в секунду отдельно.

    Для установки скорости сети при запуске эмулятора используйте параметр -netspeed emulator. Примеры:

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

    Чтобы изменить скорость сети во время работы эмулятора, подключитесь к консоли и используйте команду network speed :

    network speed 14.4 80
    
  • network capture {start| stop} file отправляет пакеты в файл. Ниже приведен список параметров и их значений:

    Примечание: Начиная с Android Emulator 36.5 и более поздних версий, трафик Wi-Fi-соединений по умолчанию обрабатывается netsim. Команда захвата сетевого трафика в консоли захватывает только устаревший сотовый/WAN-трафик, маршрутизируемый через стек QEMU slirp. Для захвата пакетов Wi-Fi, Bluetooth или расширенных сетевых пакетов в современных версиях эмулятора см. раздел «Захват сетевого трафика» в руководстве по расширенным сетевым настройкам эмулятора.

  • start file : Начинает захват сетевых пакетов. В целях безопасности имя файла должно быть простым (без разделителей пути, таких как / , и без .. ). Файл захвата пакетов будет сохранен в каталоге содержимого вашего AVD в папке console_out/ (например, ~/.android/avd/avd_name.avd/console_out/file ).

  • stop file : Останавливает отправку пакетов в указанный файл.

Эмуляция телефонии

Эмулятор Android включает в себя собственные эмулируемые модемы GSM и CDMA, позволяющие имитировать телефонные функции в эмуляторе. Например, с GSM можно имитировать входящие телефонные звонки, а также устанавливать и завершать соединения для передачи данных. С CDMA вы указываете источник подписки и предпочтительный список роуминга. Система Android обрабатывает имитированные звонки точно так же, как и реальные. Эмулятор не поддерживает аудиосвязь во время звонков.

  • gsm {call| accept| cancel| busy} phonenumber Параметры GSM следующие:

    • call : Имитирует входящий телефонный звонок с указанного номера телефона.
    • accept : Принимает входящий вызов с указанного номера телефона и изменяет состояние вызова на активное. Вы можете изменить состояние вызова на активное только в том случае, если его текущее состояние — ожидание или удержание.
    • Отмена : Завершает входящий телефонный звонок с этого номера или исходящий телефонный звонок на этот номер.
    • Состояние "занято" : Закрывает исходящий вызов на указанный номер телефона и изменяет состояние вызова на "занято". Вы можете изменить состояние вызова на "занято" только тогда, когда его текущее состояние - "ожидание".
  • Команда gsm {data| voice} state изменяет состояние соединения GPRS, а команда `voice state` изменяет состояние соединения GPRS, как показано ниже:

    • Незарегистрированный пользователь : Нет доступной сети.
    • Домашняя сеть : В локальной сети, без роуминга.
    • Роуминг : В роуминговой сети.
    • Поиск : Поиск в сетях.
    • Запрещено : только экстренные вызовы.
    • выключено : То же самое, что и незарегистрированный.
    • on : То же, что и дома.
  • Функция GSM Hold : Изменяет состояние вызова на удержание. Вы можете изменить состояние вызова на удержание только тогда, когда его текущее состояние — активное или ожидание.

  • gsm list : Отображает список всех входящих и исходящих вызовов и их статус.

  • Статус GSM : Отображает текущее состояние голосовой связи/передачи данных в сети GSM. Значения соответствуют значениям, указанным для команд голосовой связи и передачи данных.

  • gsm signal {rssi| ber} Изменяет сообщаемый уровень сигнала (rssi) и частоту битовых ошибок (ber) в течение следующих 15 секунд обновления. Ниже приведен список параметров и их значений:

    • rssi : диапазон значений от 0 до 31, а для неизвестного значения — 99.
    • ber : диапазон значений от 0 до 7, а для неизвестного значения — 99.
  • gsm signal-profile num : Задает профиль уровня сигнала. num — число от 0 до 4.

  • cdma ssource source Задает текущий источник подписки CDMA, где source — это список разрешенных абонентов на основе сети, содержащий абонентов оператора CDMA и их значения, следующим образом:

    • nv : Считывает данные подписки из энергонезависимой оперативной памяти.
    • ruim : Считывает данные о подписке из съемного модуля идентификации пользователя (RUIM).
  • cdma prl_version version : Выводит текущую версию списка предпочтительных роуминговых номеров (PRL). Номер версии относится к базе данных PRL, содержащей информацию, используемую в процессе выбора и приобретения системы.

Управление датчиками в эмуляторе

Эти команды указывают, какие датчики доступны в AVD. Помимо использования команды sensor, вы можете просмотреть и настроить параметры эмулятора на экране «Виртуальные датчики» на вкладках «Акселерометр» и «Дополнительные датчики».

  • Состояние датчиков : Отображает список всех датчиков и их состояние.

  • sensor get sensor-name : Получает настройки для параметра sensor-name. В следующем примере получается значение для акселерометра:

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

    Значения ускорения, разделенные двоеточиями (:), относятся к координатам x, y и z виртуальных датчиков.

  • sensor set sensor-name value-x:value-y:value-z : Задает значения для sensor-name. В следующем примере датчик ускорения задается значениями x, y и z, разделенными двоеточиями.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

эмуляция SMS

  • sms send sender-phone-number textmessage Генерирует эмулированное входящее SMS-сообщение. Ниже приведен список параметров и их значений:

    • sender-phone-number : Содержит произвольную числовую строку.
    • текстовое сообщение : SMS-сообщение.

    В следующем примере сообщение "hi there" отправляется на номер телефона 4085555555:

    sms send 4085555555 hi there
    

Консоль пересылает SMS-сообщение в Android-фреймворк, который передает его приложению на эмуляторе, обрабатывающему SMS, например, приложению «Сообщения». Если вы передадите 10 цифр, приложение отформатирует их как номер телефона. Более длинные или короткие числовые строки будут отображаться в том виде, в котором вы их отправили.

имитация отпечатков пальцев

  • finger touch fingerprint-id : Имитирует касание пальца к датчику.

  • Удаление пальца : Имитирует удаление пальца.

Инструкции по использованию этих команд см. в следующем разделе, посвященном моделированию и проверке отпечатков пальцев .

Запись экрана

Команда записи экрана позволяет захватывать высококачественные видеофайлы с физического дисплея эмулятора непосредственно из хост-системы. Это очень полезно для конвейеров непрерывной интеграции и автоматизированного сообщения об ошибках.

  • screenrecord {start| stop} file Запускает или останавливает процесс записи экрана.
    • start file : Запускает запись видео. Выходной файл должен иметь обязательное расширение .webm . Захваченное видео сохраняется непосредственно в каталог вывода консоли вашего AVD: ~/.android/avd/avd_name.avd/console_out/file .
    • stop file : Останавливает активный процесс записи на экране.

Автоматизация и макроэкономика

Подсистема автоматизации позволяет разработчикам записывать переходы состояний макросов на работающем виртуальном устройстве и воспроизводить их для выполнения автоматизированных тестовых сценариев.

  • automation {record| stop-record| play| stop-play} Управляет автоматической записью макросов.
    • record : Начинает запись изменений состояния устройства и входных сигналов.
    • stop-record : Останавливает текущую сессию записи макроса.
    • play : Начинает воспроизведение записанной макропоследовательности.
    • stop-play : Останавливает активную последовательность воспроизведения макросов.

Физика (6 степеней свободы)

Физические команды управляют регистрацией пространственных положений эталонных данных для моделей физического движения с шестью степенями свободы (6DoF), которые используются для моделирования расширенного отслеживания движений.

  • physics {record-gt| stop} Управляет записью физической модели позы.
    • record-gt : Начинает запись эталонных данных о движении по 6 степеням свободы.
    • stop : Останавливает текущий процесс проверки достоверности данных.

Расширенные элементы управления устройством

В этом разделе собраны специализированные конечные точки консольных команд для расширенных конфигураций эмуляции, включая сетевые прокси, конфигурации с несколькими дисплеями, переопределение рендеринга и прямую отладку гипервизора.

  • multidisplay {add| del} Добавляет или удаляет дополнительные виртуальные мониторы для тестирования многоэкранных конфигураций. Примечание: Дополнительные мониторы не поддерживаются в профилях Fold, таких как Pixel Fold или эмулятор Resizable.

  • proxy {set| clear} Настраивает переадресацию сетевого прокси программно из консоли.

    • set host port : Настраивает параметры целевого прокси-сервера.
    • clear : Сбрасывает настройки прокси-сервера до значений по умолчанию. Примечание: Операции по настройке прокси-сервера завершаются с ошибкой в ​​средах выполнения без графического интерфейса.
  • virtualscene-image {wall| table} image_path Настраивает фоновые стены или горизонтальные столы, отображаемые на видеопотоке виртуальной сцены, с помощью пользовательского файла изображения.

  • resize-display scale динамически регулирует разрешение экрана между заданными значениями. Примечание: регулировка разрешения не поддерживается в безмониторных конфигурациях.

  • nodraw {on| off} Отключает физическую отрисовку графического интерфейса пользователя на экране хоста для снижения нагрузки на системную память и графический процессор во время выполнения большого объема фоновых автоматизированных задач в безмониторном режиме.

  • grpc port Настраивает расширенное программное управление устройствами через пользовательские конечные точки портов gRPC.

  • qemu monitor обеспечивает прямой интерактивный доступ к консоли базового гипервизора. Ввод этой команды возможен только через активные сеансы консоли Telnet.

  • icebox track pid Включает автоматическое создание снимков системы при возникновении необработанного исключения или сбоя в указанном процессе приложения.

  • phonenumber number Устанавливает виртуальный локальный номер телефона целевого устройства.

программный интерфейс gRPC

Современные версии эмуляторов поддерживают мощный программный интерфейс gRPC наряду с устаревшей консолью Telnet. В то время как консоль Telnet отлично подходит для быстрых интерактивных сессий или простого написания скриптов, интерфейс gRPC разработан для высокопроизводительного, безопасного и надежного автоматизированного управления в средах непрерывной интеграции (CI) и безголовых средах. Предлагая прямые конечные точки сервисов, gRPC устраняет необходимость в анализе текстовых потоков, управлении рукопожатиями терминальных сессий или открытии незашифрованных портов localhost.

Чтобы помочь вам выбрать между устаревшей консолью Telnet и современным программным интерфейсом gRPC, ознакомьтесь со следующим сравнением производительности, безопасности и функциональных возможностей:

Особенность Консоль Telnet Интерфейс gRPC
Лучше всего подходит для Ручная отладка, интерактивные сессии. Безголовые системы CI/CD, мощные автоматизированные испытательные стенды.
Скорость Более низкая скорость; избыточный текст, задержка соединения. Оптимизированный; мультиплексированный HTTP/2, быстрый прототип.
Безопасность Незашифровано; локальные порты (5554–5585). Может быть защищен протоколом TLS, работает в сетях.
Потоки Не поддерживается; только запрос-ответ. Потоки для logcat, захвата гостевого аудио.
СМИ Записывает выходные файлы на диск хоста/гостевой системы. Бинарные буферы, передаваемые напрямую по сети.
Гостевая ОС Доступно только для фиксированных команд эмулятора. Выполняет собственные команды гостевой оболочки bash.

Запуск и вызов gRPC

Для использования конечных точек gRPC запустите эмулятор Android из командной строки и добавьте флаг -grpc , указав целевой порт обратной связи.

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

После запуска эмулятора с включенной службой gRPC вы можете выполнять программные RPC-вызовы. Для тестирования из командной строки используйте утилиту grpcurl для связи со службами эмулятора. Все запросы форматируются в формате JSON и передаются в виде обычного текста.

# 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

сопоставление Telnet-консоли с сервисом gRPC

В приведенной ниже справочной таблице сопоставлены устаревшие команды консоли Telnet с соответствующими службами и методами gRPC, что указывает на способы программной автоматизации распространенных взаимодействий с виртуальными устройствами:

Категория Устаревшая команда Telnet gRPC-сервис / метод
Статус ping EmulatorController/getStatus
Статус avd name incubating.AvdService/getAvdInfo
Статус kill EmulatorController/setVmState
Статус restart EmulatorController/setVmState
Власть power display EmulatorController/getBattery
Власть power capacity EmulatorController/setBattery
Геолокация geo fix EmulatorController/setGps
Датчики sensor set incubating.SensorService/setSensor
Биометрия finger touch EmulatorController/sendFingerprint
Поза posture EmulatorController/setPosture
Поза physics / fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
GSM-звонок gsm call EmulatorController/sendPhone
GSM-звонок phonenumber EmulatorController/setPhoneNumber
Перенаправление redir add Waterfall/ForwardPort
Вход event send EV_KEY EmulatorController/sendKey
Вход event send EV_ABS EmulatorController/sendTouch
СМИ screenrecord incubating.ScreenRecording
Визуализация nodraw EmulatorController/setDisplayMode
Снимки avd snapshot list SnapshotService/ListSnapshots
Снимки avd snapshot load/save SnapshotService/LoadSnapshot

Программные команды, уникальные для gRPC.

Интерфейс gRPC предоставляет ряд передовых возможностей, которые физически невозможно реализовать через устаревшие консольные соединения Telnet. К ним относятся прямая потоковая передача logcat, двунаправленный захват или внедрение звука, модификация графического интерфейса хоста и прямой доступ к командной оболочке.

gRPC-сервис / метод Параметр Возможности
streamLogcat {"maxLines": 100} Потоковая передача логов гостевой системы logcat
streamAudio {} Передает аудиопоток через проводное соединение.
injectAudio {"audio": "..."} Вставляет аудиопотоки с микрофона
UiController {"theme": "DARK"} Изменяет темы оформления окна хоста.
Waterfall/Exec {"cmd": "ls"} Выполняет собственные команды оболочки гостевой ОС.

Моделирование и проверка отпечатков пальцев

Рисунок 1. Экран аутентификации по отпечатку пальца.

Используйте команду finger для имитации и проверки аутентификации по отпечатку пальца в вашем приложении. Вам потребуется SDK Tools 24.3 или выше и Android 6.0 (уровень API 23) или выше.

Для имитации и проверки аутентификации по отпечатку пальца выполните следующие действия:

  1. Если у вас еще нет отпечатка пальца, зарегистрируйте новый отпечаток в эмуляторе, выбрав «Настройки» > «Безопасность» > «Отпечаток пальца» и следуя инструкциям по регистрации.

  2. Настройте приложение для аутентификации по отпечатку пальца . После выполнения этой настройки на вашем устройстве отобразится экран аутентификации по отпечатку пальца.

  3. Пока ваше приложение отображает экран аутентификации по отпечатку пальца, перейдите в консоль и введите команду finger touch и созданный вами идентификатор отпечатка пальца. Это имитирует касание пальца.

  4. Then, enter the finger remove command to simulate finger removal. Your app should respond as if a user touched and then removed their finger from the fingerprint sensor.