Android和HDMI CEC

jay*_*jay 21 android

我使用Android版4.4.4的PlugPC(计算棒),将其连接到电视的HDMI端口,以控制电视上显示的内容.我的应用程序在启动时启动,控制屏幕.现在通过我的应用程序,我想控制电视音量和源切换(也许).我在这方面有以下问题:

  1. 有没有办法通过Android发送HDMI-CEC命令使用Java控制电视音量,打开/关闭等电视?

  2. Android提供的任何Java库或其他可用的Java库?

  3. 一个使用CEC的简单Java示例.

PS - 我理解(https://source.android.com/devices/tv/HDMI-CEC.html)中提出的理论,但对如何使用代码实现无能为力.请具体说明您对上述问题的回答.

Kno*_*sos 9

是的,它完全有可能做到,但它是令人难以置信的 变幻无常.HDMI CEC就像一辆公共汽车.通常,在两个方向上.

你的问题:

  1. 是.虽然我使用JNI来访问执行实际工作的本机代码.您可以完全使用Java来完成它.
  2. 可能不是.问题是每个供应商都实现了发送CEC信号的代码.除了CEC命令本身之外,根本没有共同的功能.访问的设备文件在大多数设备中可能是唯一的,尤其是从供应商到供应商.因此,任何创建最多的库都支持各种不同的供应商及其怪癖,并且未来不会针对下一个供应商的变化进行校对.
  3. 不幸的是我无法提供我的工作代码.我在下面提供了一个链接到github上的Amlogic源文件,它完成了很多工作.我的代码看起来很相似

我自己的一些观点:

  1. 并非所有设备都支持所有命令.许多较少使用的命令将无法实现,因为它的成本更高.
  2. 与CEC的交互通常取决于供应商.他们可能会有自己的库或设备文件来使用.
  3. CEC并不总是在两个方向上工作,这取决于供应商是否实现了该功能.它并不总是实现,因为它需要花费更多.

要正确地执行此操作,您可能需要使用JNI实现代码以形成正确的数据包.您可能会发现这很有用,至少对于Amlogic而言.

我在我的设备中使用的设备访问点是/dev/amhdmitx0.您可以将格式良好的数据包发送到该位置.

这是一个有用的网站,可以告诉您如何形成CEC命令:http://www.cec-o-matic.com/.

不幸的是,我不能分享比我写的更多.出于各种法律原因.

您可以做的最好的事情是寻求您编程的供应商的帮助.如果您正在为特定平台编码.他们可能愿意帮助你.