在Android系统中添加对新遥控器按键的支持
来源:互联网 发布:java控制面板 编辑:程序博客网 时间:2024/04/28 02:05
转自 :http://blog.csdn.net/xiruanliuwei/article/details/6969777
现在Android系统的使用越来越广泛,很多STB中也在使用Android系统,STB遥控器中经常需要使用一些特殊的按键,这就需要我们能够在Android系统中添加对新遥控器按键的支持,本文以添加RED、GREEN、YELLOW、BLUE四个遥控器按键为例,简述一下操作步骤:
1、修改遥控器的驱动程序,在遥控器的驱动程序中(通常是头文件中)添加:
- <span style="font-family:'Courier New';font-size:16px;"><span style="white-space:pre"> </span>在static const t_translate_code translate_code_table[]中添加
- <span style="white-space:pre"> </span>{0xb44b3e01, KEY_RED, 0}, //Red
- <span style="white-space:pre"> </span>{0xb54a3e01, KEY_GREEN, 0}, //Green
- <span style="white-space:pre"> </span>{0xb6493e01, KEY_YELLOW, 0}, //Yellow
- <span style="white-space:pre"> </span>{0xb7483e01, KEY_BLUE, 0}, //Blue
- </span>
第一列的数值是驱动程序读取获得的按键值,通过这个表,将其翻译成Linux的标准按键值,Linux的标准按键值在include\linux\input.h文件中定义,翻译成Linux的标准按键值后,再通过input_report_xxx函数(也在include\linux\input.h中定义)将按键值送到用户空间中。2、在input.h文件中添加需要添加的按键值:
- <span style="font-family:'Courier New';"><span style="white-space:pre"> </span>#define KEY_RED 0x18e
- <span style="white-space:pre"> </span>#define KEY_GREEN 0x18f
- <span style="white-space:pre"> </span>#define KEY_YELLOW 0x190
- <span style="white-space:pre"> </span>#define KEY_BLUE 0x191</span>
3、在使用的*.kl文件中追加按键值,默认使用的是qwerty.kl文件,但是不同的产品有不同的*.kl文件,需要找准确文件,在后面追加:
key 398 RED
key 399 GREEN
key 400 YELLOW
key 401 BLUE
这里的398、399、400、401是KEY_RED、KEY_GREEN、KEY_YELLOW、KEY_BLUE在input.h中定义的值,也就是上面的0x18e,0x18f,0x190, 0x191,后面的字符串RED等就是下面的keycodeLabels.h中定义的RED、GREE、YELLOW、BLUE字符串。
在这个地方将input_report_xxx传送上来的值转换成对应的字符串。4、在文件frameworks/base/include/ui/keycodeLabels.h中,在后面顺序添加:
{ "RED", 141},
{ "GREEN",142},
{ "YELLOW",143},
{ "BLUE",144},
...
{ NULL, 0 }
但是需要注意,追加的按键必须在最后的NULL的前面。 在这个地方,会将RED等这些字符串转换成数值、键值,传送到KeyEvent.java中。4、在frameworks/base/core/res/res/values/attrs.xml中追加:
- <span style="font-family:'Courier New';font-size:16px;"> <enum name="KEYCODE_RED" value="141" />
- <enum name="KEYCODE_GREEN" value="142" />
- <enum name="KEYCODE_YELLOW" value="143" />
- <span style="white-space:pre"> </span><enum name="KEYCODE_BLUE" value="144" />
- <span style="white-space:pre"> </span><!-- This enum provides the same keycode values as can be found in
- {@link android.view.KeyEvent}. -->
- </span>
同时,需要在frameworks/base/core/java/android/view/KeyEvent.java中添加:
- <span style="font-family:'Courier New';font-size:16px;"> <span style="white-space:pre"> </span>public static final int KEYCODE_RED = 141;
- public static final int KEYCODE_GREEN = 142;
- public static final int KEYCODE_YELLOW = 143;
- public static final int KEYCODE_BLUE = 144;
- </span>
KeyEvent.java中添加的数值要与上面attrs.xml中的数值保持一致,如果是在最后面追加的话,需要注意修改LAST_KEYCODE的值为最后一个。
修改完后,需要在根目录下执行make update-api更新current.xml文件,否则编译时会出错。
至此,按键支持添加完毕,就可以在应用程序中响应这些按键了。
- 在Android系统中添加对新遥控器按键的支持
- 在Android系统中添加对新遥控器按键的支持
- 在Android系统中添加对新遥控器按键的支持
- 在Android系统中添加对新遥控器按键的支持
- RK平台Android4.4 添加一个新的遥控器支持以及添加特殊按键
- Android中关于APK对遥控器支持的修改
- Android中关于APK对遥控器支持的修改
- Android中关于APK对遥控器支持的修改
- android添加新按键
- Android添加新按键
- android 添加新的键值,自定义按键
- android 添加新的键值,自定义按键
- android 添加新的键值,自定义按键
- Android添加一个新的按键
- android 添加新的键值,自定义按键
- Android添加一个新的按键Key
- Android 添加新的键值,自定义按键
- Android添加一个新的按键
- Lesson Learned From Project
- cloud foundry之dea组件源码分析
- 开发语言类 -- C
- 安装ecshop的一些常见错误的解决方案
- Find a way
- 在Android系统中添加对新遥控器按键的支持
- 有一条记录,其中有一个字段是图片路径,删除记录同时也要删除图片的执行顺序?
- 微软安全新闻聚焦-双周刊第二十八期(补发)
- 很长时间 不写的ALV OO, 贴在此处下次参考
- Android开发中R.java文件丢失
- JPA常用注解
- ALV 含打印 全选 Checkbox,贴在此处方便 下次参考
- hibernate查询方式中load和get的使用
- C++ Metaprogramming 和 Boost MPL (中)