【问题标题】:Use libCEC + USB dongle in Android app在 Android 应用中使用 libCEC + USB 加密狗
【发布时间】:2018-01-20 04:59:39
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: android hdmi android-usb hdmi-cec


    【解决方案1】:

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

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

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

    【讨论】:

    • 我尝试了这种方法,但是当我尝试通过 usbManager.getDeviceList() 列出所有 USB 设备时,它不返回任何设备。知道为什么吗?我已经用我的方法发表了一篇文章,但仍然没有成功(stackoverflow.com/questions/45639210/…)。提前感谢您的任何指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2016-10-16
    • 1970-01-01
    • 2017-03-26
    • 2014-12-16
    • 2014-04-09
    • 2016-04-13
    相关资源
    最近更新 更多