Как отправить быстрые живые команды ввода на устройство Android с помощью отладки по USB? - PullRequest
0 голосов
/ 09 марта 2019

Я хочу настроить некоторые клавиши на моем ПК таким образом, чтобы при их нажатии они вызывали определенное действие сенсорного ввода на моем устройстве Android.

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

Однако есть две проблемы, которые я не могу решить: -

(1) Оболочка adb слишком медленная для использования.У него задержка больше секунды из-за того, как он работает с использованием Java.

Мне нужно, чтобы он был максимально быстрым.

(2) Я не могу найти способотправляйте ввод с помощью сенсорного ввода в реальном времени, большинство инструментов просто записывают жесты и выполняют их.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Это можно сделать, выполнив следующие действия:

Разработайте приложение, которое запускается как сервер и прослушивает вашу команду через порт внутри устройства

Приложение может бытьвызывается из команды / службы инструментария оболочки adb.Некоторый код, подобный приведенному ниже, для получения команд (строк) с вашего ПК и выполнения необходимых действий.

public void startServer() throws Exception {

    try {
        serverSocket = new ServerSocket(8080);
        CLIENT_SOCKET = serverSocket.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                CLIENT_SOCKET.getInputStream()));

        String inputLine;
        // Starting server
        while ((inputLine = in.readLine()) != null) {
            //out(inputLine);
            // do whatever with inputLine, handle touches for 'K'
        }
    } catch (IOException e) {
           //err in connection, handle
    }

перенаправляет ваш локальный порт на порт внутри оболочки adb (это порт вашего устройства, где находится приложение).слушает)

adb forward tcp:8080 tcp:8080

Вышеуказанная команда переадресует локальный порт ПК с порта 8080 на порт 8080 внутри устройства / эмулятора оболочки adb.

Программа на стороне клиента (вашего ПК) илискрипт, который подключается, отправляет команды на локальный порт, который, в свою очередь, достигает оболочки

Пример кода на python

 import socket
 soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 soc.connect(('127.0.0.1', 8080))
 soc.send('k\n') # this will reach inside the startServer function of app.

Выше приведен только пример кода, там будет многодругие complete примеры описанных выше шагов онлайн.

0 голосов
/ 09 марта 2019

Если вы тестируете свое приложение или просто используете его с помощью кода, вы можете написать большинство взаимодействий пользователя с вашим приложением, используя Инструменты тестирования Android , такие как Espresso или предпочтительно Тестирование AndroidX suite (входит в комплект поставки Google Jetpack).

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

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

Если вы запустите эти тесты на эмуляторе, они будут медленными из-за медленной природы эмуляторов и их зависимости от аппаратного обеспечения вашей системы. Было бы лучше, если бы вы запускали их на устройстве или в облаке, используя Firebase Test Lab .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...