Подключиться к RS232 с Android — диалоговое окно без разрешения или команда оболочки

Цель

Я разрабатываю собственное приложение для внутреннего использования на мини-ПК Android с root-правами. Цель (между другими... так... многими... другими...) состоит в том, чтобы иметь возможность включать и выключать телевизор с помощью последовательного порта, встроенного в телевизор. Я использую для этого последовательный USB-кабель FTDI UART RS232.

Положение дел

Приложение работает прямо сейчас, используя библиотеку Android (serial-driver) Я могу общаться с телевизором, но проблема в том, что устройство запрашивает разрешения при каждой установке (а иногда, как ни странно, снова на одном и том же устройстве), поэтому его нужно улучшить.

Проблема

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

Мои два бита

Я чувствую, что эту проблему можно решить двумя способами, но я до сих пор не смог заставить их работать.

  1. Поскольку устройство рутировано, я могу изменить неизвестный (мне) параметр, который позволяет мне обойти запрос на разрешение. Для этого я попытался создать намеренный фильтр для USB-устройства и переписать интерфейс, управляющий этим поведением, оба безуспешно. Есть ли способ сделать эту версию Android более снисходительной в отношении разрешений?
  2. Я использую SuperSU внутри приложения по другим причинам, поэтому я могу использовать всю мощь оболочки. Используя это, я пытался вручную отправлять команды на устройство (/dev/bus/usb/00X/00Y), но это не сработало. Моя теория заключается в том, что это связано с разрешениями пути к устройству, но даже при выполнении нездорового chmod 777 я не могу заставить их работать.

Итак, это моя проблема прямо сейчас. Я надеюсь, что кто-то здесь может мне помочь.

Дополнительная информация

  • Запуск: Пользовательский Android 4.4.2 (нельзя изменить)
  • Должен быть выполним исключительно из apk (но он может использовать команды оболочки)
  • У нас нет подписи производителя для установки в качестве системного приложения.
  • Мы можем использовать только одно приложение, поэтому у меня не может быть другого, чтобы переместить его в /sys/apps, и я не знаю, может ли приложение сделать это с самим собой.
  • использование Busybox stty -F /dev/.../ возвращает «Операция не разрешена»

person Asfura    schedule 23.08.2016    source источник
comment
Вы изучали использование чего-то вроде последовательных библиотек в этой теме: ‹stackoverflow .com/questions/12317576/stable-alternative-to-rxtx›? Кажется, что они сделали бы все возможное, чтобы сохранить стабильные разрешения. Если вы переустанавливаете, как вы инициируете установку, если не вводом данных пользователем? Кажется, вы говорите, что не можете щелкнуть, чтобы закрыть всплывающее окно разрешений.   -  person BenPen    schedule 23.08.2016
comment
Спасибо за ответ. Я пробовал несколько библиотек, включая эту, прежде чем остановился на текущей. Изменить: нажал Enter перед завершением. У меня нет физического доступа к устройствам (обычно), и процесс установки выполняется через оболочку, выполняя: String execute = am force-stop com.develop.app && pm install -r + result + && sleep 5 && am start -a android.intent.action.MAIN -n com.develop.app/.MainActivity; Shell.CommandResult cr = Shell.SU.run(выполнить);   -  person Asfura    schedule 23.08.2016
comment
Ах, с рутированным андроидом обязательно должно быть что-то, что эмулирует нажатие кнопки на экране. Пробовали ли вы искать инструменты тестирования, которые вы могли бы использовать, чтобы нажать эту кнопку? ИЛИ есть ли способ представить всплывающее окно разрешений в текстовой форме для консоли/оболочки?   -  person BenPen    schedule 23.08.2016
comment
Да, это наше текущее решение, приложение вначале спрашивает, есть ли USB-устройство, если да, запрашивает разрешение и эмулирует ввод, но это не идеальное решение для приложения корпоративного уровня.   -  person Asfura    schedule 23.08.2016
comment
Ах, о всплывающем окне в качестве приглашения оболочки, это было бы идеально, но в общих чертах приложения не должны возиться в консоли, поэтому я сомневаюсь, что есть способ сделать это по умолчанию.   -  person Asfura    schedule 23.08.2016
comment
stackoverflow.com/questions/ 22188856/› получил ссылку автоматически на стороне, вы пробовали этот набор подсказок о разрешениях? Это звучит как полезный навык. Я бы хотел иметь то, что по сути является последовательным расширителем WIFI. USB-удлинитель WIFI также был бы отличным, но я не уверен в возможностях Android для полного подключения к USB-устройству, такому как камера. Вам полностью придется решить вопрос с пропускной способностью, как и с любой беспроводной камерой. Иметь произвольный мост USB‹-›wifi, вау. Сотовый мост тоже   -  person BenPen    schedule 23.08.2016
comment
О, с точки зрения способа создания всплывающего окна по умолчанию, если вы хотите взломать код Android, я уверен, что есть способ направить всплывающее окно на консоль, даже если оно непереносимое или небезопасное.   -  person BenPen    schedule 23.08.2016