Подключитесь к RS232 из Android - Нет прав доступа или команды оболочки
Задача
Я разрабатываю специальное приложение для внутреннего использования на мини-ПК с Android. Цель (между другими... так... многими... другими...) состоит в том, чтобы иметь возможность включать и выключать телевизор, используя последовательный порт на телевизоре. Я использую для этого последовательный USB-кабель FTDI UART RS232.
Статус
Приложение работает прямо сейчас, используя библиотеку Android ( серийный драйвер), я могу общаться с телевизором, но проблема в том, что устройство запрашивает разрешения при каждой установке (а иногда, как ни странно, снова на том же устройстве), поэтому нуждается в улучшении.
вопрос
Поскольку устройство не имеет мыши или клавиатуры по умолчанию, когда это происходит, кто-то должен нажимать на кнопки, и, поскольку устройство обычно скрыто за экраном, это может сильно раздражать.
Мои два бита
Эта проблема, я чувствую, может быть решена двумя способами, но я до сих пор не смог заставить их работать.
- Поскольку устройство рутировано, я мог бы изменить неизвестный (для меня) параметр, который позволяет мне обойти запрос на разрешение. Для этого я попытался сделать фильтр намерений для USB-устройства и переписать интерфейс, который управляет этим поведением, оба безуспешно. Есть ли способ сделать эту версию для Android более снисходительной в отношении разрешений?
- Я использую SuperSU по другим причинам внутри приложения, поэтому я могу использовать всю ширину мощной оболочки. Используя это, я пытался отправить команды вручную на устройство (/dev/bus/usb/00X/00Y), но это не сработало. Моя теория состоит в том, что это из-за разрешений пути устройства, но даже если я делаю нездоровый chmod 777, я не могу заставить их работать.
Итак, это моя проблема прямо сейчас. Я надеюсь, что кто-то здесь может мне помочь.
Дополнительная информация
- Запуск: пользовательский Android 4.4.2 (не может быть изменен)
- Должен быть выполнимым исключительно из apk (но он может использовать команды оболочки)
- У нас нет подписи производителя, чтобы установить его как системное приложение
- Мы можем использовать только одно приложение, поэтому у меня не может быть другого, чтобы переместить его в /sys/apps, и я не знаю, может ли приложение сделать это для себя.
- использование Busybox stty -F /dev/.../ возвращает "Операция не разрешена"