Для достижения цели нам необходимы установленные Xposed Additions Pro и Tasker , где для первого требуется доступ с правами root и установленная Xposed Framework (стабильная сборка).
После установки дополнений Xposed вам будет предложено активировать его модуль в Xposed Framework. Активируйте это.
Мы будем использовать способность Xposed Addition перехватывать нажатие клавиши и предоставим условие и действие, которое будет выполнено для этого нажатия клавиши. Мы будем использовать Tasker, чтобы обойти ограниченный набор опций Xposed Addition.
Примечание : все разделы протестированы на Android 4.4.2 и 5.0.2.
Инструкции для дополнений Xposed
- Запустите Xposed Additions → нажмите кнопки
- Нажмите Добавить новый ключ
- Нажмите кнопку устройства, которое будет использоваться в качестве клавиши ↑ клавиатуры
- Я выбрал кнопку увеличения громкости / +
- Нажмите на запись для кнопки, которую вы выбрали ранее
- Нажмите Добавить новое условие
- Нажмите Загрузить список приложений
- Выберите приложение, в котором вы хотите , чтобы кнопка увеличения громкости имитировала ↑ клавишу клавиатуры
- Нажмите на запись ранее выбранного приложения
- Установите флажок для активации Нажмите
- Нажмите Нажмите
- Выберите DPad Up aka Directional Pad Up - это KeyEvent
(Нажмите на изображение, чтобы увеличить его; чтобы узнать подробности)
(Порядок изображений: следуйте изображениям слева направо в каждом ряду)
Теперь создать действие для Volume Down / - кнопок в указанном выше способом , но выбрать DPad вниз на заключительном этапе.
Это время запуска приложения вы выбрали в указанных шагах и попробуйте нажать Volume Up и уменьшение громкости кнопок. Они будут работать как клавиши ↑ ↓ направления клавиатуры.
Обратите внимание, что в отличие от физической клавиатуры, в которой при удерживании клавиши со стрелкой система будет продолжать прокручивать вверх / вниз, это не то поведение, которое вы наблюдаете, если долго нажимать кнопки (выбранного выше) устройства.
Кроме того , вместо выбора DPad Up и DPad Down выберите Page Up и Page Down, чтобы смоделировать клавиатуру Pg Upи Pg Dnклавишу или назначить их для другого действия, перечисленного в шаге 10 .
И не беспокойтесь об уровне мелодии звонка или громкоговорителя, так как они будут управляться длительным нажатием кнопок увеличения и уменьшения громкости . Это поведение действует при запуске вышеупомянутого выбранного приложения.
Я успешно протестировал вышеупомянутое решение на Chrome, Firefox и некоторых текстовых редакторах. Все идет нормально!
Неа! Указанное решение подходит не для всех приложений. Мы хотим охватить все приложения, поэтому зачем ограничиваться только веб-браузерами и текстовыми редакторами.
К сожалению, есть приложения, над которыми указанное решение не работает. Похоже , что ключевые события , которые мы там использовали, не влияют на такие приложения, как Foxit MobilePDF , WPS Office , BetterbatteryStats и многие другие.
Давайте сосредоточимся на новом решении сейчас. Android позволяет отправлять свайпы с помощью input
команды; Xposed Additions позволяет использовать собственный ярлык в качестве действия; Tasker может создать собственный ярлык для использования input swipe
.
Инструкции для Tasker и дополнений Xposed
Сначала нам нужны координаты начала и конца (X и Y), чтобы использовать их в input
команде. Мы можем записать это с помощью команды Getevent .
Настройте adb на своем ПК, подключите устройство к ПК, включите отладку по USB на устройстве, запустите оболочку на ПК и введите:
adb shell su -c 'getevent -l'
Он будет показывать несколько строк, а затем будет бесконечно ждать вывода.
Настало время выбрать длину свайпа в качестве альтернативы DPad Up / Page Up .
Например, длина стрелки, измеряющая пролистывание на двух изображениях, является альтернативой прокрутки длины DPad Up / Down и Page Up / Down соответственно.
Когда вы проводите пальцем по экрану, оболочка на ПК будет отображать вывод:
/dev/input/event0: EV_ABS ABS_MT_TRACKING_ID 0000044c
/dev/input/event0: EV_KEY BTN_TOUCH DOWN
/dev/input/event0: EV_KEY BTN_TOOL_FINGER DOWN
/dev/input/event0: EV_ABS ABS_MT_POSITION_X 00000300
/dev/input/event0: EV_ABS ABS_MT_POSITION_Y 000006de
/dev/input/event0: EV_ABS ABS_MT_PRESSURE 000000c0
/dev/input/event0: EV_ABS ABS_MT_TOUCH_MINOR 00000004
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_SYN SYN_REPORT 00000000
...
/dev/input/event0: EV_ABS ABS_MT_POSITION_X 000002fb
/dev/input/event0: EV_ABS ABS_MT_POSITION_Y 000004e3
/dev/input/event0: EV_ABS ABS_MT_PRESSURE 000000cc
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_ABS ABS_MT_PRESSURE 000000c8
После выполнения пролистывания вверх определенной длины нажмите Ctrl+ Cна ПК, чтобы остановить команду.
В его выходных данных обратите внимание на первые записи ABS_MT_POSITION_X ( 00000300
) и ABS_MT_POSITION_Y ( 000006de
), а также последние записи ABS_MT_POSITION_X ( 000002fb
) и ABS_MT_POSITION_Y ( 000004e3
). Это начальная (X1, Y1) и конечная (X2, Y2) координаты в шестнадцатеричной форме. Преобразуйте их в десятичную форму (попробуйте конвертер здесь ).
В оболочке, если вы введете:
adb shell input touchscreen swipe X1 Y1 X2 Y2
(замените X1, Y1 и X2, Y2 на теперь преобразованные десятичные координаты), вы заметите, что на устройстве проведен пролистывание вверх, которое эффективно имитирует прокрутку вниз Управляйте этими координатами, пока не получите идеальную прокрутку вниз.
В качестве альтернативы использованию Getevent , вы можете попробовать более дружественный подход.
Включить расположение указателя в разделе параметров разработчика . Как только вы включите его, строка состояния вашего устройства будет покрыта полосой, показывающей некоторые координаты, которые будут меняться с движением вашего прикосновения / пролистывания на экране.
Время, чтобы записать вашу длину удара. Коснитесь и удерживайте палец на экране, отметьте X:
и отобразите Y:
сверху. Начните проводить пальцем до нужной длины; стоп , но не отпускайте палец и запишите соответствующие X:
и Y:
координаты.
Это координаты X1, Y1 и X2, Y2 для вашего пролистывания. Они представлены в десятичной форме, поэтому вы можете напрямую использовать их в input
команде.
Вы можете отключить расположение указателей сейчас.
Инструкции, специфичные для Tasker
Теперь мы создали бы ярлык для имитации свайпа, который мы вручную выполнили в последней команде, с целью его автоматизации.
- Запустите Tasker и включите его. Если ее значок над вкладкой « Профили » горит, значит, он уже активен. Обратите внимание, что все в Tasker сохраняется при нажатии кнопки «Назад», что также приводит к изменению активного окна.
- Создайте задачу в разделе « Задачи» через
+
(внизу) → назовите ее (скажем Scroll Down
).
Создайте в нем действие через +
→ Код → Запустить Shell и введите следующие данные:
Команда :input touchscreen swipe X1 Y1 X2 Y2
Замените X1, X2 и Y1, Y2 координатами, которые вы отметили ранее. Например input touchscreen swipe 768 1758 763 1251
.
Проверьте использование Root
- Хранить ошибки в :
%sd_err
- этот шаг не является обязательным.
- Создайте новую задачу с именем
Scroll Up
и создайте в ней действие, выполнив шаг 3 . Для моделирования смахивания просто поменяйте местами координаты, и это будет возможно input swipe X2 Y2 X1 Y1
, и при необходимости используйте %su_err
для хранения ошибок, если они возникнут!
Инструкции по использованию ярлыков задач в дополнениях Xposed
Это последний этап решения, и в Xposed Additions будут использоваться эти пользовательские ярлыки.
- Выполните шаги 1-11 в первом разделе, посвященные использованию дополнений Xposed
- Выберите Ярлык вместо DPad Up или Page Up
- Выберите Ярлык задачи → Прокрутить вверх
- Выберите значок 3x3 квадратные коробки внизу
- Выберите значок и вернитесь в Xposed Additions.
- Повторите вышеупомянутые шаги 1-5 для уменьшения громкости и выберите в нем прокрутку вниз . Вы уже поняли, что делать каждый раз .
Я собрал видео, показывающее весь ответ в действии. Здесь . Обратите внимание на качество, потому что он сильно разорван с 100 МБ до 7,1 МБ.
Ура!