在Android应用中使用libCEC + USB加密狗

sda*_*bet 7 android hdmi android-usb hdmi-cec

我的目标是从配备Pulse-Eight USB加密狗的Android机箱上运行的标准(即非系统)应用程序发送HDMI CEC命令.

按照这些说明,我成功地设法为Android 编译libcec并在框中以root身份执行它,使用以下命令:

echo <my-cec-command> | cec-client -s /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

sda*_*bet 1

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

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

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