Подтвердить что ты не робот

Android и HDMI CEC

Я использую PlugPC (compute stick) с Android версии 4.4.4, подключая его к HDMI-порту телевизора, чтобы управлять тем, что отображается на телевизоре. Мое приложение запускается при загрузке, контролируя экран. Теперь через мое приложение я хочу контролировать громкость ТВ и переключатель источника (возможно). У меня есть следующие вопросы в этом отношении:

  • Есть ли способ отправить команды HDMI-CEC через android с помощью Java для управления громкостью телевизора, включением/выключением и т.д. на совместимых телевизорах?

  • Любая библиотека Java, предоставляемая андроидом или иным образом доступная для нее?

  • Простой пример Java с использованием CEC.

P.S - Я понимаю теорию, представленную в (https://source.android.com/devices/tv/HDMI-CEC.html), но не знаю, как реализовать код. Пожалуйста, уточните свои ответы на вышеуказанные вопросы.

4b9b3361

Ответ 1

Да, это возможно, но это невероятно непостоянно. HDMI CEC работает как автобус. Обычно в обоих направлениях.

Ваши вопросы:

  • Да. Хотя я использую JNI для доступа к собственному коду, который выполняет фактическую работу. Вы могли бы сделать это исключительно на Java.
  • Наверное, нет. Проблема в том, что каждый поставщик реализует код для отправки сигналов CEC. Общей функциональности вообще нет, кроме самих команд ЦИК. Доступ к файлу устройства, вероятно, уникален для большинства устройств, особенно от поставщика к поставщику. Таким образом, любые созданные библиотеки наиболее поддерживают широкий спектр разных поставщиков и их причуды, и это не будет защищено будущим будущим от изменений в вендоре.
  • К сожалению, я не могу предоставить свой рабочий код. Я предоставляю ссылку ниже в исходный файл Amlogic на github, который выполняет большую часть работы. Мой код похож.

Некоторые из моих собственных моментов:

  • Не все устройства поддерживают все команды. Многие менее используемые команды не будут реализованы, потому что они стоят дороже.
  • Взаимодействие с ЦИК часто зависит от поставщика. У них, вероятно, будет своя собственная библиотека или файл устройства для работы.
  • CEC не всегда будет работать в обоих направлениях, зависит от того, реализовал ли поставщик эту функциональность. Это не всегда реализуется, потому что это стоит больше.

Чтобы сделать это правильно, вам, скорее всего, понадобится реализовать свой код с помощью JNI для формирования правильных пакетов. Вы можете найти это полезное, по крайней мере для Amlogic.

Точка доступа устройства, которую я использую в своих устройствах, /dev/amhdmitx0. Вы можете отправить свои хорошо сформированные пакеты в это место.

Вот полезный сайт, который может рассказать вам, как сформировать команду CEC: http://www.cec-o-matic.com/.

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

Лучшее, что вы можете сделать, это обратиться за помощью к поставщику, для которого вы программируете. Если вы кодируете определенную платформу. Они могут помочь вам.