概述
Android键值中遥控器中的添加,下面是在mstar平台上的添加,做一个记录,以后方便找到,使用。
1,遥控按键键值映射标准化表示例:
自定义的按键名(中文)
自定义的按键名(英文)
红外码值(东芝码)
linux层键值映射
android层按键名(KeyEvent.java)
android层键值映射
是否广播以全局响应
以下是普通遥控键值
待机[短按]
SKY_KEY_POWER
0CH
0x74
KEYCODE_POWER
26
√
1【*/@】
SKY_KEY_1
01H
0x2
KEYCODE_1
8
交替
SKY_KEY_ALTERNATE
0BH
0x1d1
KEYCODE_ALTERNATE
226
例:添加交替键值--ALTERNATE
2,修改驱动(kernel):
ps:修改在kernel中的驱动
1、kernel2.6.35.11driversmediaIRkeymapsrc-skyworth-tv.c
在static struct ir_scancode skyworth_tv[]表中添加:
{ 0x000B , KEY_FN_ESC }, //KEYCODE_ALTERNATE
a、0x000B 为红外码值。
b、KEY_FN_ESC 在kernel2.6.35.11includelinuxinput.h中有定义:#define KEY_FN_ESC 0x1d1
注意:不能往input.h中添加定义,一定是里面已有的定义才拿来用!
2、编译驱动:
在kernel2.6.35.11目录下
$> cp .config_amber3_SMP_android_emmc .config
$> ./genlink.sh
$> make menuconfig
如果有改动,则Save and exit
$> make
修改kl文件Vendor_1918_Product_0001.kl :
添加:key 465 ALTERNATE
465对应于input.h中定义的linux键值0x1d1
1、\172.20.32.73harrymstaricsdeviceskyworthskywortha3modules
rc-skyworth-tv.ko
mdrv-ir.ko
2、\172.20.32.73harrymstaricsdeviceskyworthskywortha3
*.kl --对应kl文件是linux到Android的键值映射
*.idc
3、mk文件
PRODUCT_COPY_FILES :=
$(LOCAL_KERNEL):kernel
device/skyworth/skywortha3/init.amber3.rc:root/init.amber3.rc
# IR/keymap kernel module
PRODUCT_COPY_FILES +=
device/skyworth/skywortha3/modules/mdrv-ir.ko:system/lib/modules/mdrv-ir.ko
device/skyworth/skywortha3/modules/rc-skyworth-tv.ko:system/lib/modules/rc-skyworth-tv.ko
# Device idc/keylayout
PRODUCT_COPY_FILES +=
device/skyworth/skywortha3/Vendor_1918_Product_0001.kl:system/usr/keylayout/Vendor_1918_Product_0001.kl
device/skyworth/skywortha3/Vendor_1918_Product_0002.kl:system/usr/keylayout/Vendor_1918_Product_0002.kl
device/skyworth/skywortha3/Vendor_1918_Product_0003.kl:system/usr/keylayout/Vendor_1918_Product_0003.kl
device/skyworth/skywortha3/Vendor_1918_Product_1918.idc:system/usr/idc/Vendor_1918_Product_1918.idc
device/skyworth/skywortha3/Vendor_3697_Product_0003.idc:system/usr/idc/Vendor_3697_Product_0003.idc
device/skyworth/skywortha3/Vendor_13ff_Product_0008.idc:system/usr/idc/Vendor_13ff_Product_0008.idc
device/skyworth/skywortha3/Vendor_0e8f_Product_0035.kl:system/usr/keylayout/Vendor_0e8f_Product_0035.kl
device/skyworth/skywortha3/Generic.kcm:system/usr/keychars/Generic.kcm
4、init.amber3.rc
insmod /system/lib/modules/rc-skyworth-tv.ko
insmod /system/lib/modules/mdrv-ir.ko
5、修改framework层
KEYCODE_HOME_LONG
761
KEYCODE_BACK_LONG
762
KEYCODE_CENTER_LONG
763
KEYCODE_NEW_SHUTTLE_LEFT
764
KEYCODE_NEW_SHUTTLE_RIGHT
765
①frameworksbasecorejavaandroidviewKeyEvent.java
=>修改keycode、name.append ,定义键值
public static final int KEYCODE_ALTERNATE = 226;
names.append(KEYCODE_ALTERNATE, "KEYCODE_ALTERNATE");
②frameworksbasenativeincludeandroidkeycodes.h andriod4.1路径:frameworksnativeincludeandroidkeycodes.h 可以不加 ,定义键值
=>修改enum
AKEYCODE_ALTERNATE = 226,
③frameworksbaseincludeuiKeycodeLabels.h andriod4.1路径:frameworksbaseincludeandroidfwKeycodeLabels.h
=>修改static const KeycodeLabel KEYCODES[]
{ "ALTERNATE", 226},
④externalwebkitSourceWebKitandroidpluginsANPKeyCodes.h 可以不加
=>修改enum ANPKeyCodes
kAlternate_ANPKeyCode = 226,
⑤frameworksbasecoreresresvaluesattrs.xml
=>修改
标签中增加:
6、修改icsframeworksbasepolicysrccomandroidinternalpolicyimplPhoneWindowManager.java
ps:这部分主要是对键值进行处理的地方
interceptKeyBeforeDispatching函数中,也可能在interceptKeyAfterDispatching函数中,或者dispatchUnhandledKey函数中,看需求
if (down) {// handler mute,volume_up,volume_down,share before dispatch key to app.
if (keyCode == KeyEvent.KEYCODE_SENSE_ALL//靠近键控板感应,247
|| keyCode == KeyEvent.KEYCODE_SENSE_MENU//靠近键控板菜单键感应,248
|| keyCode == KeyEvent.KEYCODE_SENSE_CENTER//靠近键控板确定键感应,249
|| keyCode == KeyEvent.KEYCODE_SENSE_BACK//靠近键控板返回键感应,250
|| keyCode == KeyEvent.KEYCODE_SENSE_VOLUME_UP//靠近键控板音量加感应,251
|| keyCode == KeyEvent.KEYCODE_SENSE_VOLUME_DOWN//靠近键控板音量减感应,252
|| keyCode == KeyEvent.KEYCODE_SENSE_CHANNEL_UP//靠近键控板频道加感应,253
|| keyCode == KeyEvent.KEYCODE_SENSE_CHANNEL_DOWN//靠近键控板频道减感应,254
|| keyCode == KeyEvent.KEYCODE_SENSE_LEAVE//离开键控板频道减感应,255
……
) {//发广播,将键值广播出去,供service获取
Intent intent = new Intent("com.android.sky.SendHotKey");
intent.putExtra("specialKey", keyCode);
mContext.sendBroadcast(intent);
Log.d(TAG, "sendBroadcast: com.android.sky.SendHotKey# key:"+keyCode);
}
}
最后
以上就是眯眯眼羽毛为你收集整理的Android 智能TV电视系统遥控器键值添加的全部内容,希望文章能够帮你解决Android 智能TV电视系统遥控器键值添加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复