在 Android 应用中使用 libCEC + USB 加密狗
Posted
技术标签:
【中文标题】在 Android 应用中使用 libCEC + USB 加密狗【英文标题】:Use libCEC + USB dongle in Android app 【发布时间】: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 提供的连接之间建立桥梁。您有什么想法或建议吗?
【问题讨论】:
【参考方案1】:到目前为止,我发现的最佳解决方案是使用 USB Host API + UsbSerial library 使用纯 Java 代码(无嵌入式 libCEC)在适配器的串行端口上读取/写入 CEC 数据包。
我在libCEC 上进行了一些逆向工程,以找出适用于基本操作的命令,例如打开和关闭电视以及设置活动源。
我终于想出了以下UsbCecConnection
java 类:https://gist.github.com/sdabet/ac4d7711d1a529806cb7b695530b1fac
【讨论】:
我尝试了这种方法,但是当我尝试通过 usbManager.getDeviceList() 列出所有 USB 设备时,它不返回任何设备。知道为什么吗?我已经用我的方法发表了一篇文章,但仍然没有成功(***.com/questions/45639210/…)。提前感谢您的任何指导。以上是关于在 Android 应用中使用 libCEC + USB 加密狗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 应用程序中使用 OSM 地图。?有啥教程可以学习在android中使用OSM吗?
我可以在 sencha 应用程序(Android)中使用 android AsyncTask
在 Android Studio 中使用 ActivityInstrumentationTestCase2 在横向测试 Android 应用程序