Устройство, о котором мы говорим, представляет собой головное устройство Android 8 с подключенной внешней USB-клавиатурой. Ну, мне нужно назначить некоторые задачи функциональным клавишам этой клавиатуры, например. запуск определенных приложений. Скажем, F4
может запускать медиаплеер, F5
навигационное приложение и так далее. Для этой цели подойдет плагин Automate или AutoInput Tasker, но все приложения такого типа используют службу специальных возможностей для взаимодействия с физическими HID-устройства.
Большая проблема здесь заключается в том, что это конкретное Android-устройство регулярно убивает службы специальных возможностей при (горячей) перезагрузке. Перепробовал абсолютно все, от отключения режима энергосбережения до пометки Automate и т. д. как приложение для администрирования устройства, ничего не помогло. Поэтому я подал в отставку и теперь думаю об альтернативном способе повторного включения соответствующей службы специальных возможностей после того, как система отключила ее после перезагрузки по неизвестной причине.
Если бы устройство было рутировано, я полагаю, был бы простой способ перезапустить службу специальных возможностей с помощью команды оболочки или чего-то еще (просто догадываюсь, я довольно новичок в Android). Но, очевидно, я хочу избежать рутирования, если это возможно. Идеальным сценарием был бы (автоматический) запуск команды оболочки / приложения / службы переднего плана / чего угодно при каждой перезагрузке, у которой было бы достаточно административных привилегий для повторного включения службы специальных возможностей, которую система только что отключила во время перезагрузки. Конечно, все это без рутирования устройства. Но я не очень уверен, что это можно сделать на Android (в Windows было бы достаточно службы, работающей в системной учетной записи, но Android — это другая история).
Справедливым решением может быть
- рутировать устройство,
- установить команду оболочки (приложение, служба переднего плана, что угодно), предназначенную для перезапуска службы специальных возможностей после каждой перезагрузки и
- отключите устройство (например, с помощью SuperSU), чтобы защитить пользователя и не аннулировать гарантию.
Может ли кто-нибудь сказать мне, может ли приведенное выше решение дать желаемый результат, и если да, то могу ли я дать некоторые рекомендации, как это сделать?