我正在使用Minix NEO X8-H(Android媒体中心,4.4.2),我需要向电视发送HDMI-CEC命令:当我的应用程序接到电话时,我想自动将电视源更改为Minix hdmi资源.
实际上,Minix提供了一些启用HDMI-CEC的选项,据报道媒体中心软件XBMC支持CEC.但我只想在"接收模式"中:用户可以使用电视遥控器命令Android设备.我想以相反的方式工作.我浏览了XBMC的源代码,我发现了非常有趣的代码,但不知道它是否对我有用.
我找到了获得HDMI-CEC输入命令的串行设备
/dev/input/event7
Run Code Online (Sandbox Code Playgroud)
内核引用放在:"/ sys/devices/virtual/input/input7 /"
# cat /sys/devices/virtual/input/input7/name
cec_input
Run Code Online (Sandbox Code Playgroud)
这是dmesg日志的一部分:
<5>[ 0.000000@0] Kernel command line: init=/init console=ttyS0,115200n8 no_console_suspend storage=5 cvbsdrv=0 vdaccfg=0xa007 logo=osd1,loaded,0x15100000,4k2ksmpte,full hdmimode=4k2ksmpte cvbsmode=576cvbs androidboot.firstboot=0 hdmitx=cec0
<4>[ 0.000000@0] kernel get hdmimode form uboot is 4k2ksmpte
<4>[ 0.000000@0] hdmitx: cec: Function List: disable, , ,
<4>[ 0.000000@0] hdmitx: cec: HDMI aml_read_reg32(P_AO_DEBUG_REG0):0x0
<4>[ 0.000000@0] hdmitx: cec: HDMI hdmi_cec_func_config:0x0
<4>[ 1.392440@1] hdmitx: cec: CEC not ready
<4>[ 4.872752@0] hdmitx: cec: CEC init
<4>[ 4.876194@1] hdmitx: cec: CEC …Run Code Online (Sandbox Code Playgroud) 我的目标是从配备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提供的连接之间架起桥梁.你有什么想法或建议吗?