alexp ([personal profile] alexp) wrote2022-01-08 08:44 pm

Проблема с сенсорным экраном Android. Как управлять устройством?

У моей электронной книги Bouye Likebook Plus перестал работать сенсор в середине экрана. Вообще данное устройство довольно тормознутое (хотя вся продукция Bouye не отличается высокопроизводительными процессорами). Прошивку обновляли всего один раз, а под Android версии 4 многие приложения уже не запускаются.

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

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

Далее попробовал подключить проводную мышь через Micro USB OTG адаптер, но она не заработала. То ли питания от USB порта читалки не хватает, то ли это связано с прошивкой устройства. Из-за последней перестал работать дешёвый безымянный Micro USB Ethernet адаптер. И хотя этот адаптер можно запитать от внешнего блока питания, не понятно, какие там напряжение, сила тока и полярность. Плюс отсутствие гальванической развязки у дешёвого безымянного адаптер способно убить не только сам адаптер, но и USB разъём читалки.

Попробовал установить приложение Serverless Bluetooth Keyboard & Mouse for PC/Phone, чтобы превратить смартфон в беспроводную клавиатуру/мышь для читалки, но приложение не смогло подключиться к электронной книге по Bluetooth.

Беспроводная Bluetooth Клавиатура с Али, которая шла в комплекте с кожаным чехлом к планшету Samsung Galaxy Tab A 10.1 2016 (T580/T585/T580N/T585N) подключилась к электронной книге без особых проблем (правда, пришлось запитать её от USB, т.к. литиевый аккумулятор за несколько лет бездействия умер). Но выяснилось, что стрелочки и кнопка Tab не позволяют перемещаться по пунктам меню. Возможно, кнопки Fn, Ctrl, Option, Alt в сочетании с другими как-то работают, но мне этого понять не удалось. Может, кто подскажет? У меня получилось только набирать текст, а также выходить на основной экран при помощи клавиши Home.



Хотел воспользоваться бесплатным приложением scrcpy (Windows, Linux, Mac) для отображения копии экрана на компьютере, а также для управления устройством. Но для scrcpy нужна хотя бы 5-ая версия Андроид.

Airdroid установить удалось. Это приложение позволяет с ПК установить/удалить Android приложение, скопировать файлы, но без root доступа зеркалирование экрана недоступно.

Единственное, что получилось - это воспользоваться ADB командами для нажатия на кнопки на экране. Во-первых, можно вывести список элементов управления на экране при помощи команды
adb pull $(adb shell uiautomator dump | grep -oP '[^ ]+.xml') /tmp/view.xml

Конечно же для этого должна быть включена USB отладка на устройстве, а на компьютере должен быть установлен Android Device Bridge (ADB).

Но не всегда это работает корректно. Например, для меню настроек Koreader я получил бесполезный список
<!--?xml version='1.0' encoding='UTF-8' standalone='yes' ?--><hierarchy rotation="0"><node index="0" text="" class="android.widget.FrameLayout" package="org.koreader.launcher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1404,1872]">
<node index="0" text="" class="android.widget.LinearLayout" package="org.koreader.launcher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1404,1872]"><node index="0" text="" class="android.widget.FrameLayout" package="org.koreader.launcher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1404,1872]">
<node index="0" text="" class="android.view.View" package="org.koreader.launcher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1404,1872]"></node></node></node></node></hierarchy>


Благо, что в настройках Android в "Developer options" есть пункт "Pointer location", который позволяет выводить координаты нажатия на экране. Конечно, для сломанной части сенсора приходится прикидывать числа, но это хотя бы какой-то выход.

Если же элементы управления выводятся корректно, то можно по названию кнопки найти её границы на экране. Например, в следующем коде кнопка с подписью Install имеет координаты в пределах прямоугольника с углами [703,1422] и [1259,1518].

<node index="1" text="Install" class="android.widget.Button" package="com.android.packageinstaller" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[703,1422][1259,1518]"

Соответственно можно воспользоваться командой "input tap x y" для нажатия на экране в точке (х,y), которая лежит внутри прямоугольника
adb shell input tap x y

В данном случае можно использовать
adb shell input tap 704 1423

где 704 - на единичку больше левой границы, а 1423 - на единичку больше верхней границы прямоугольника.

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

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org