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