我是靠谱客的博主 眯眯眼羽毛,最近开发中收集的这篇文章主要介绍Android 智能TV电视系统遥控器键值添加,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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电视系统遥控器键值添加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部