Hi3751V811 IR 遥控器适配流程

一、 概述

       海思红外遥控功能的实现是在 Android 原生功能的基础上增加了一部分自定义按键功能。使用原厂开发板及配套的遥控器默认是已经实现了红外遥控器功能,这里主要是介绍如何进行新的遥控器适配。硬件平台使用的是原厂 Demo 板:HI3751V811DMO4A VER.C,软件环境使用的是:HiDPTAndroidV500R002C00SPC060 版本(Android 8.0Hi3751V811_DMO-eng 选项。


二、开发指引


1. 文件路径

device/hisilicon/bigfish/system/ir_user/key_pars/key.xml.24
device/hisilicon/bigfish/system/ir_user/key_pars/linux_key.h
device/hisilicon/bigfish/prebuilts/Vendor_0001_Product_0001.kl
frameworks/native/include/input/InputEventLabels.h
frameworks/base/core/java/android/view/KeyEvent.java
frameworks/base/core/res/res/values/attrs.xml
frameworks/native/include/android/keycodes.h
frameworks/native/include/input/KeycodeLabels.h
device/hisilicon/bigfish/system/ir_user/ir_user.cpp

2. 遥控器适配流程

       这里只以标准遥控器为例,介绍 HI3751V811 遥控器适配流程,IR 驱动默认是支持 NEC simple、NEC full、RC6、RC5、SONY、TC9012、刷卡型遥控器、双引导码型遥控器协议。

 

2.2.1 从遥控器到内核                                                                    

       适配遥控器首先需要先获取相应遥控器的键码值,海思有提供 android_ir_user 应用程序来获取按键的键码值等信息,但是我在使用的时候发现按键后并没有信息打印出来,查看对应源码:device/hisilicon/bigfish/system/ir_user/ir_user.cpp,发现缺少了对应按键识别后的信息打印,添加如下打印信息:

 

       添加了打印信息后,执行 android_ir_user 命令,按下按键 TEST 可以看到如下打印信息:

 

       红框内的值就是对应按键的键码值,记录键码值 0xba45fe01,这一步需要记录遥控器上所有需要使用的按键的键码值,然后将这些值填写到 device/hisilicon/bigfish/system/ir_user/key_pars/key.xml.24 中,如下图所示:

 

       到这里,如果只是对原有定义的按键进行适配,那么修改对应 key value 的值后就可以使用。如果是新增还未定义的按键功能,则还需进行以下步骤。

 

       接下来打开文件 device/hisilicon/bigfish/system/ir_user/key_pars/linux_key.h ,在数组 Linux_KeyCode_Ary 中添加如下信息:

 



       这一步中数组第一个元素 KEY_TEST 必须要与 key.xml.24 中的 name 值完全一致。如此一来,当按下某个遥控器按键以后,系统就会将这个按键值识别成你所设置的那个数字数值。

 

       第三步则是找到你系统中所用的那个 kl 文件,并将要增加的按键的信息填写进去,这里的 kl 文件可能会有很多个,可以通过执行命令 dumpsys input 来确定:

 

       通过打印信息可以确定使用的 kl 文件为:Vendor_0001_Product_0001.kl。接下来就需要在 device/hisilicon/bigfish/prebuilts/Vendor_0001_Product_0001.kl 文件中添加新增的按键信息:

 

       同时要注意这里的按键信息是没有前缀 " KEY_ " 的,并且中间的数字值要填十进制形式,也要与 linux_key.h 中对应的值一致。

 

       至此,我们就实现了一套新的遥控器按键的事件从遥控器到系统内核的适配了。

 

2.2.2 从内核到普通应用

       首先在 frameworks/native/include/input/InputEventLabels.h 文件的 KEYCODES 数组中新增你要适配的按键信息,如下图所示:

 

       这里括号里面的信息要与前面 kl 文件中的完全一致。

 

       打开 frameworks/base/core/java/android/view/KeyEvent.java 文件,添加如下内容:

 

       然后打开 frameworks/base/core/res/res/values/attrs.xml 文件,添加如下:

 

       最后再打开文件 frameworks/native/include/android/keycodes.h 文件,添加如下内容:

 

       至此就完成了标准协议 IR 遥控器的整个适配流程。

 


三、参考资料

《Android 解决方案 开发指南》

《android 红外遥控器实现原理》

《海思平台机顶盒适配遥控器流程》

《Android蓝牙及红外遥控器键值适配》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论