2017-08-11 50 views
6

我的目标是从配备Pulse-Eight的USB加密狗的Android盒子上运行的标准(即非系统)应用发送HDMI CEC命令。在Android应用中使用libCEC + USB加密狗

these instructions我成功地设法编译libcec Android和执行它的根在包装盒上,使用此命令:

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

其中/dev/ttyACM0是堵塞加密狗时由系统创建的设备文件。

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

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

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

回答

0

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

我在libCEC上做了一些改进工程,以找到基本操作的相应命令,例如关闭&以关闭电源并设置活动源。

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

+0

我试过这种方法,但是当我试图通过usbManager.getDeviceList列出所有USB设备()返回没有任何设备。任何想法为什么?我用我的方法做了一篇文章,但仍然没有成功(https://stackoverflow.com/questions/45639210/use-libcec-usb-dongle-in-android-app)。预先感谢任何指导。 –