Используйте 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

Другие вопросы по тегам