2017-08-11 51 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)。預先感謝任何指導。 –