ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-02-29 11:07:47  阅读:1031  来源: 互联网

标签:文件 适配 kl 遥控器 key 按键 海思


2020-02-29

关键字:


 

海思平台的遥控器适配过程还算是比较简单的,就是要稍微费上一些时间而已。

 

遥控器的适配流程大致可以分成两个步骤:

1、按键事件从遥控器传递到内核

2、按键事件从内核传递到普通应用

 

1、从遥控器到内核

首先我们要知道你要适配的遥控器的每一个按键的键码,即你按下某个按键后海思平台能识别到的键码值。

 

直接在串口敲以下命令运行相关程序:

android_ir_user -D

android_ir_user 是预置在 /system/bin 下的一个遥控输入与解析的程序。

 

该程序在运行起来以后逐个按下遥控器上的按键,并记录下相应键码值,视你的遥控器按键数量,这一步会相对比较消耗时间:

 

 

然后将这些值填入 key.xml 文件:

device/hisilicon/bigfish/system/ir_user/key_pars/key.xml

 

 

第二步是打开 linux_key.h 文件:

device/hisilicon/bigfish/system/ir_user/key_pars/linux_key.h

在文件中的 Linux_KeyCode_Ary 数组中添加你要新增的按键信息:

const linux_keycode_ary Linux_KeyCode_Ary[512]

 

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

 

第三步则是找到你系统中所用的那个 kl 文件,并将要增加的按键的信息填写进去:

device/hisilicon/bigfish/prebuilts/

这个 kl 文件可能会有多套,具体使用的是哪一套要以你自己的项目为准,一般供开发人员使用的 kl 文件都保存于以上所示的目录内,可以参考这个目录下的 Android.mk 来确定。

 

一般来讲,海思平台会使用两套 kl 文件,它们们于开发板文件系统的以下位置:

system/usr/keylayout/Generic.kl
system/usr/keylayout/Vendor_0001_Product_0001.kl

 

在相应的 kl 文件中合适的位置新增你的信息,要注意关键信息的唯一性:

 

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

 

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

 

 

2、从内核到普通应用

这一部分说简单也简单,说麻烦也挺麻烦,看你的要求有多高了。

 

首先来操作 KeycodeLabels.h 文件:

frameworks/native/include/input/KeycodeLabels.h

在 KEYCODES 数组中新增你要适配的按键信息:

static const KeycodeLabel KEYCODES[]

 

这里的字符串信息要与前面 kl 文件中的完全一致,但数字值却可以不同了。

 

这一步实现了以后你的遥控器按键事件就能到 Android 的框架层了。以 SMARG_GROOM 按键为例,当用户按下这一按键时,在Android框架层可以接收到值为 261 的 keycode 值。

 

一般来说,适配到这里就差不多了,已经可以在 APK 中监听到按键事件了。但是有一个不足的就是在应用开发中无法像传统按键那样以 KeyEvent.KEYCODE_0 、 KeyEvent.KEYCODE_DPAD_CENTER 这种类型来编写代码。

 

如果要实现这种需求,则还需要再进一步配置:

 

首先打开 KeyEvent.java:

frameworks/base/core/java/android/view/KeyEvent.java

在合适的位置增加如下所示的按键值信息:

 

这里的数字值必须要与前面 KeycodeLables.h 中的一致。

 

同时再在 populateKeycodeSymbolicNames 中按如下形式添加你的按键信息:

 

 

然后打开 attrs.xml 文件:

frameworks/base/core/res/res/values/attrs.xml

按如下形式添加按键信息:

 

至此,就可以实现在应用开发中通过 KeyEvent.SMART_GROOM 的形式来监听按键事件了。

 

最后,附上一份海思官方的适配遥控器按键的文档,这份文档所记录的步骤更详细,但主要的步骤按笔者上面的描述就够了。

链接:https://pan.baidu.com/s/1UMjFD4C9JsMkuvu46-d-vQ
提取码:re80

 


 

标签:文件,适配,kl,遥控器,key,按键,海思
来源: https://www.cnblogs.com/chorm590/p/12377744.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有