Мультитач

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

Внимание

Для использования интерфейса мультитач необходимо обновить клиент до версии 9.22 или выше. Для наилучшей совместимости рекомендуется также обновить и серверную часть.

Чтобы вы могли как можно быстрее понять, как им пользоваться, рекомендуется открыть «Параметры разработчика» -> «Ввод» и включить функции «Отображать касания» и «Местоположение указателя» (если они не включены, вы можете не увидеть никакой обратной связи). Следующий пример кода демонстрирует, как нарисовать символ X в левом верхнем углу экрана.

touch = d.touch()
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# --- 1. Нажатие в начальной точке ---
finger0.down(150, 320)
finger1.down(450, 320)
touch.wait(20)

# --- 2. Движение по траектории (10 точек) ---
finger0.move(180, 350)
finger1.move(420, 350)
touch.wait(20)

finger0.move(210, 380)
finger1.move(390, 380)
touch.wait(20)

finger0.move(240, 410)
finger1.move(360, 410)
touch.wait(20)

finger0.move(270, 440)
finger1.move(330, 440)
touch.wait(20)

finger0.move(300, 470) # Центральная точка пересечения
finger1.move(300, 470)
touch.wait(20)

finger0.move(330, 500)
finger1.move(270, 500)
touch.wait(20)

finger0.move(360, 530)
finger1.move(240, 530)
touch.wait(20)

finger0.move(390, 560)
finger1.move(210, 560)
touch.wait(20)

finger0.move(420, 590)
finger1.move(180, 590)
touch.wait(20)

finger0.move(450, 620) # Конечная точка
finger1.move(150, 620)
touch.wait(20)

# --- 3. Поднятие пальцев ---
finger0.up()
finger1.up()

# Выполнить действие
touch.perform()

Запись траектории

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

# Получить сессию мультитач
touch = d.touch()

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

# Вы можете сохранить траекторию в бинарный файл
touch.save("/sdcard/touch/bin")

# Вы также можете напрямую воспроизвести траекторию
touch.perform()

Сохранение траектории

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

# Получить сессию мультитач
touch = d.touch()

# Вы можете сохранить только что созданную траекторию для последующей загрузки
touch.save("/sdcard/track0.bin")

Загрузка траектории

Вы можете загрузить траекторию в сессию непосредственно из файла, сохраненного на диске.

# Получить сессию мультитач
touch = d.touch()

# Загрузить траекторию из файла
touch.load("/sdcard/track0.bin")

Создание траектории

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

# Получить сессию мультитач
touch = d.touch()

# Получить ввод для двух (или более) пальцев
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# Палец 0 касается экрана в координатах 150 320
# Параметр z представляет силу нажатия пальца, допустимые значения от 1 до 255, по умолчанию 128
finger0.down(150, 320, z=128)

# Палец 0 перемещается из 150 320 в 180 350
finger0.move(180, 350, z=128)

# Подождать 20 миллисекунд (эквивалентно finger0.wait(20))
touch.wait(20)

# Палец 0 отпускает экран
finger0.up()

# Очистить все траектории
touch.reset()

# Выполнить действие (wait - ожидать ли завершения)
touch.perform(wait=True)