Android和HDMI CEC

时间:2016-09-09 21:37:25

标签: android

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

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

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

  3. 使用CEC的简单Java示例。

  4. P.S - 我理解(https://source.android.com/devices/tv/HDMI-CEC.html)中提出的理论,但对如何用代码实现却毫无头绪。请具体说明您对上述问题的回答。

1 个答案:

答案 0 :(得分:8)

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

您的问题:

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

    1. 并非所有设备都支持所有命令。许多较少使用的命令将无法实现,因为它的成本更高。
    2. 与CEC的互动往往取决于供应商。他们可能会有自己的库或设备文件来使用。
    3. CEC并不总是在两个方向上工作,这取决于供应商是否实现了该功能。它并不总是实现,因为它需要花费更多。
    4. 要正确地执行此操作,您可能需要使用JNI实现代码以形成正确的数据包。你可能find this useful,至少对于Amlogic来说。

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

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

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

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