Используйте libCEC + USB-ключ в приложении Android
Моя цель - отправлять команды HDMI CEC из стандартного (т.е. не системного) приложения, работающего на Android-устройстве, оснащенном USB-ключом Pulse-Eight.
Следуя этим инструкциям, я успешно сумел скомпилировать libcec для Android и выполнить его от имени пользователя root с помощью этой команды:
echo <my-cec-command> | cec-client -s /dev/ttyACM0
где /dev/ttyACM0
это файл устройства, созданный системой при подключении ключа.
Однако права доступа к этому файлу не позволяют выполнить команду пользователем без полномочий root (поэтому ее нельзя выполнить из моего приложения для Android).
С другой стороны, приложение может фактически получить доступ к USB-ключу через API-интерфейс USB-хоста Android SDK (при условии, что пользователь предоставляет разрешение) и даже может быть подключено к последовательному контроллеру USB с помощью библиотеки UsbSerial.
Но я не вижу способа сделать мост между соединением, предоставляемым Android Host API Android и libcec/cec-client. Есть ли у вас идея или предложение?
1 ответ
Наилучшее решение, которое я нашел на данный момент, - это использование USB Host API + библиотека UsbSerial для чтения / записи пакетов CEC на последовательном порту адаптера с использованием чистого кода Java (без встроенного libCEC).
Я выполнил некоторые ретро-разработки в libCEC, чтобы найти подходящие команды для базовых операций, таких как включение и выключение телевизора и настройка активного источника.
И я наконец придумал следующее UsbCecConnection
Java-класс: https://gist.github.com/sdabet/ac4d7711d1a529806cb7b695530b1fac