8

我的目标是从一个标准(即非系统)应用程序发送 HDMI CEC 命令,该应用程序在配备 Pulse-Eight 的 USB 加密狗的 Android 盒子上运行。

按照这些说明,我成功地为 Android 编译了 libcec,并使用以下命令在盒子上以 root 身份执行它:

echo <my-cec-command> | cec-client -s /dev/ttyACM0

/dev/ttyACM0插入加密狗时系统创建的设备文件在哪里。

但是,此文件的权限会阻止该命令由非 root 用户执行(因此无法从我的 Android 应用程序执行)。

另一方面,该应用程序实际上可以通过 Android SDK 的USB 主机 API访问 USB 加密狗(前提是用户授予权限),甚至可以使用UsbSerial库将其包装到 USB 串行控制器中。

但是我看不到任何方法可以在 Android 的 USB Host API 和 libcec/cec-client 提供的连接之间建立桥梁。你有什么想法或建议吗?

4

1 回答 1

0

到目前为止,我发现的最佳解决方案是使用USB Host API + UsbSerial 库通过纯 Java 代码(无嵌入式 libCEC)在适配器的串行端口上读取/写入 CEC 数据包。

我对libCEC进行了一些逆向工程,以找出适合基本操作的命令,例如打开和关闭电视以及设置活动源。

我终于想出了以下UsbCecConnectionjava类:https ://gist.github.com/sdabet/ac4d7711d1a529806cb7b695530b1fac

于 2017-08-18T15:04:04.990 回答