• 【IR】按键


    一、修改按键快速检查
    1、修改ir.c已有按键功能快速验证:

    如:
    在这里插入图片描述
    2、make customers

    3、在根目录 cvte_build/resource/irkeycode下(这个是NEC协议的,其他协议也是一个道理,替换对应的tab就行了)
    在这里插入图片描述

    remote_nec_irfac.tab是CVTE工厂遥控

    remote_nec_ircus1.tab是客户遥控

    将remote_nec_ircus1.tab替换板卡/vendor/etc/mr/nec/remote_nec_ircus1.tab

    重启后生效

    二、IR和hotkey编译检查拦截

    拦截一

    1、一键启动apk或者打开页面的快捷键,IR.c和hotkey.xml按键必须要匹配

    背景:有些时候配置粗心,或者不清楚这个快捷键还需要hotkey.xml配合,容易留到生产测试才发现问题,这里是为了更早的拦截问题
    在这里插入图片描述
    此时按照提示,检查 IR.c和hotkey.xml即可,如上IR.c 配置了 IRKEY_USER_DEF_FUNCTION1,但是hotkey.xml并没有用到,这个时候就会报错拦截

    拦截二

    2、目前没有实现功能但是以后可能使用的按键,在customer阶段编译可以拦截报错

    背景:有些按键目前是没有功能的,但是后面二期或者后续项目可能会用到的,这里添加了一个黑名单,记录没有目前没有功能的按键,如果配置了就报错,也是为了更早的拦截问题

    在这里插入图片描述
    如果后续按键功能已实现,只需要修改配置文件即可

    customers/common/ir/cvte_ir_no_function.txt

    颜色备注
    功能正常,部分需要配合hotkey.xml(会有编译检查拦截)
    没有功能,或者不支持

    三、IR按键配置
    颜色 备注

    功能正常,部分需要配合hotkey.xml(会有编译检查拦截)
    
    没有功能,或者不支持
    
    • 1
    • 2
    • 3

    1、Android 原生部分

    IRKEY 功能 scancode keycode keycode 备注
    IRKEY_0

    数字键0

    11	KEYCODE_0	7	
    
    • 1

    IRKEY_1 数字键1 2 KEYCODE_1 8

    IRKEY_2 数字键2 3 KEYCODE_2 9

    IRKEY_3 数字键3 4 KEYCODE_3 10

    IRKEY_4 数字键4 5 KEYCODE_4 11

    IRKEY_5 数字键5 6 KEYCODE_5 12

    IRKEY_6 数字键6 7 KEYCODE_6 13

    IRKEY_7 数字键7 8 KEYCODE_7 14

    IRKEY_8 数字键8 9 KEYCODE_8 15

    IRKEY_9 数字键9 10 KEYCODE_9 16

    IRKEY_10 -/-- 12 KEYCODE_MINUS 69

    IRKEY_POWER POWER键 116 KEYCODE_POWER 26

    IRKEY_INFO INFO、Display 358 KEYCODE_INFO 165

    IRKEY_INPUT_SOURCE SOURCE键 79 KEYCODE_TV_INPUT 178

    IRKEY_UP 上 103 KEYCODE_DPAD_UP 19

    IRKEY_DOWN 下 108 KEYCODE_DPAD_DOWN 20

    IRKEY_LEFT 左 105 KEYCODE_DPAD_LEFT 21

    IRKEY_RIGHT 右 106 KEYCODE_DPAD_RIGHT 22

    IRKEY_VOLUME_PLUS 音量+ 115 KEYCODE_VOLUME_UP 24

    IRKEY_VOLUME_MINUS 音量- 114 KEYCODE_VOLUME_DOWN 25

    IRKEY_CHANNEL_PLUS 频道+ 402 KEYCODE_CHANNEL_UP 166

    IRKEY_CHANNEL_MINUS 频道- 403 KEYCODE_CHANNEL_DOWN 167

    IRKEY_MENU MENU键 139 KEYCODE_MENU 82

    IRKEY_HOME HOME键 102 KEYCODE_HOME 3

    IRKEY_SELECT OK键、确认键 28 KEYCODE_DPAD_CENTER 23

    IRKEY_MUTE 静音键 113 KEYCODE_VOLUME_MUTE 164

    IRKEY_DOT

    52	KEYCODE_PERIOD	56	
    
    • 1

    IRKEY_RED

    398	KEYCODE_PROG_RED	183	
    
    • 1

    IRKEY_GREEN

    399	KEYCODE_PROG_GREEN	184	
    
    • 1

    IRKEY_YELLOW

    400	KEYCODE_PROG_YELLOW	185	
    
    • 1

    IRKEY_BLUE

    401	KEYCODE_PROG_BLUE	186	
    
    • 1

    IRKEY_SCREEN_SHOT 截图键 99 KEYCODE_SYSRQ 120

    只支持OSD,不支持VIDEO

    调用原厂接口,实现在tvapi apk里面processScreenCapture

    ATM30 Android 9.0内存优化已经裁剪了System UI

    Class clz = Class.forName(“android.view.SurfaceControl”);
    Method screenshot = clz.getMethod(“screenshot”, Rect.class, int.class, int.class, int.class);
    mScreenBitmap = (Bitmap)screenshot.invoke(null, new Rect(0, 0, screenWidth, screenHeigth), screenWidth, screenHeigth, 0);

    IRKEY_DEL

    delete键

    (按下遥控器Delete快捷键等同于操作虚拟键盘的Delete)

    648	KEYCODE_DEL	67	
    
    • 1

    IRKEY_EXIT 返回键 158 KEYCODE_BACK 4

    IRKEY_PLAY_PAUSE 播放/暂停 637

    KEYCODE_MEDIA_PLAY_PAUSE
    
    85
    
    • 1
    • 2
    • 3

    IRKEY_PLAY

    IRKEY_PAUSE

    IRKEY_STOP 停止 638 KEYCODE_MEDIA_STOP 86

    IRKEY_SUBTITLE SUBTITLE键 213 KEYCODE_CAPTIONS 175

    IRKEY_BACKWARD 快退 639 KEYCODE_MEDIA_REWIND 89

    IRKEY_FORWARD 快进 640 KEYCODE_MEDIA_FAST_FORWARD 90

    IRKEY_PREVIOUS 前一首 641 KEYCODE_MEDIA_PREVIOUS 88

    IRKEY_NEXT 下一首 642 KEYCODE_MEDIA_NEXT 87

    IRKEY_ZOOM_IN zoom in 688 KEYCODE_ZOOM_IN 168

    IRKEY_ZOOM_OUT zoom out 689 KEYCODE_ZOOM_OUT 169

    IRKEY_CAPSLOCK

    AOSP输入法,一键切换大小写	1129	
    
    • 1

    KEYCODE_CAPS_LOCK

    115	实现:https://tvgit.gz.cvte.cn/c/AML920L_Pie/source/base/android/+/646227
    
    • 1

    IRKEY_NICAM_MTS

    通道 - 丽音 (目前不支持丽音)

    多媒体 - 音轨

    214	KEYCODE_MEDIA_AUDIO_TRACK	222	
    
    • 1

    一期功能不带丽音

    音轨功能正常

    IRKEY_MEDIA_EJECT 进出仓 659 KEYCODE_MEDIA_EJECT 129 没功能
    IRKEY_EPG EPG 365 KEYCODE_GUIDE 172 没功能(不带DTV)

    2、CVTE 新增部分

    IRKEY 功能 scancode keycode keycode 备注
    IRKEY_NULL

    IRKEY_IR_MOUSE 遥控鼠标键 1093 KEYCODE_IR_MOUSE 1072

    实现在/android/frameworks/native/services/inputflinger/InputReader.cpp

    相关问题:

    IRKEY_ASPECT 比例模式 627 KEYCODE_ASPECT_RATIO 1040 相关配置宏:CVT_DEF_API_CONFIG_XML_TYPE
    IRKEY_FAV 喜爱列表 630 KEYCODE_FAV_LIST 1041 功能实现在 智研apk LiveTVGlobal

    IRKEY_FAV_UP 喜爱频道+ 631 KEYCODE_FAV_UP 1042
    IRKEY_FAV_DOWN 喜爱频道- 632 KEYCODE_FAV_DOWN 1043
    IRKEY_USB 多媒体快捷键 644 KEYCODE_TV_INPUT_MEDIA 1052

    公版默认支持

    功能实现:

    KEYCODE_TV_INPUT_MEDIA

    IRKEY_SMODE sound mode快捷键 636 KEYCODE_SOUND_MODE 1030 UI实现在 智研apk GlobalUI;功能在tvapi
    IRKEY_PMODE picture mode快捷键 635 KEYCODE_PICTURE_MODE 1029 UI实现在 智研apk GlobalUI;功能在tvapi
    IRKEY_NO_SUPPORT

    按键无功能,只有一个提示

    677	KEYCODE_NO_SUPPORT	1137	
    
    • 1

    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    nonsupport
    KEYCODE_NO_SUPPORT

    IRKEY_SOUND_SURROUND

    一键打开SOUND设置(只在通道里)

    678	KEYCODE_SOUND_SURROUND	1131	
    
    • 1

    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    GridSound
    false
    KEYCODE_SOUND_SURROUND

    IRKEY_SETTINGS_WIFI

    一键打开网络设置

    679	KEYCODE_SETTINGS_WIFI	1134	
    
    • 1

    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    KEYCODE_SETTINGS_WIFI

    IRKEY_USER_DEF_FUNCTION1 预置按键,可用于一键启动apk(需要配合hotkey.xml) 649 KEYCODE_USER_DEF_FUNCTION1 1110

    系统预置好的按键,名称同Android 5.1

    IRKEY_USER_DEF_FUNCTION2 预置按键,可用于一键启动apk(需要配合hotkey.xml) 650 KEYCODE_USER_DEF_FUNCTION2 1111
    IRKEY_USER_DEF_FUNCTION3 预置按键,可用于一键启动apk(需要配合hotkey.xml) 651 KEYCODE_USER_DEF_FUNCTION3 1112
    IRKEY_USER_DEF_FUNCTION4 预置按键,可用于一键启动apk(需要配合hotkey.xml) 652 KEYCODE_USER_DEF_FUNCTION4 1113
    IRKEY_USER_DEF_FUNCTION5 预置按键,可用于一键启动apk(需要配合hotkey.xml) 653 KEYCODE_USER_DEF_FUNCTION5 1114
    IRKEY_USER_DEF_FUNCTION6 预置按键,可用于一键启动apk(需要配合hotkey.xml) 672 KEYCODE_USER_DEF_FUNCTION6 1115
    IRKEY_USER_DEF_FUNCTION7 预置按键,可用于一键启动apk(需要配合hotkey.xml) 673 KEYCODE_USER_DEF_FUNCTION7 1116
    IRKEY_USER_DEF_FUNCTION8 预置按键,可用于一键启动apk(需要配合hotkey.xml) 674 KEYCODE_USER_DEF_FUNCTION8 1117
    IRKEY_USER_DEF_FUNCTION9 预置按键,可用于一键启动apk(需要配合hotkey.xml) 675 KEYCODE_USER_DEF_FUNCTION9 1118
    IRKEY_USER_DEF_FUNCTION10 预置按键,可用于一键启动apk(需要配合hotkey.xml) 676 KEYCODE_USER_DEF_FUNCTION10 1119
    IRKEY_YOUTUBE 一键启动YouTube 662 KEYCODE_CVT_YOUTUBE 1093
    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    KEYCODE_CVT_YOUTUBE

    IRKEY_NETFLIX 一键启动Netflix 663 KEYCODE_CVT_NETFLIX 1094
    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    KEYCODE_CVT_NETFLIX

    IRKEY_FILE_BROWER 一键启动文件浏览器(hotkey没有配置) 660 KEYCODE_CVT_FILE_BROWER 1091

    功能类似于
    KEYCODE_USER_DEF_FUNCTION1~10

    这个背景是之前为了做统一,在972上加了一波这样的app key

    但是从实际的配置来看,这个做法并没有推广开来

    IRKEY_APP_LIST 一键启动app list(hotkey没有配置) 661 KEYCODE_CVT_APP_LIST 1092
    IRKEY_SKYPE 一键启动SKYPE(hotkey没有配置) 664 KEYCODE_CVT_SKYPE 1095
    IRKEY_GOOGLE_PLAY_STORE 一键启动GOOGLE_PLAY_STORE(hotkey没有配置) 665 KEYCODE_CVT_GOOGLE_PLAY_STORE 1096
    IRKEY_FACEBOOK 一键启动FACEBOOK(hotkey没有配置) 666 KEYCODE_CVT_FACEBOOK 1097
    IRKEY_AMAZON_PRIME_VIDEO 一键启动AMAZON_PRIME_VIDEO(hotkey没有配置) 667 KEYCODE_CVT_AMAZON_PRIME_VIDEO 1098
    IRKEY_HOTSTAR 一键启动HOTSTAR(hotkey没有配置) 668 KEYCODE_CVT_HOTSTAR 1099
    IRKEY_HANGAMA 一键启动HANGAMA(hotkey没有配置) 669 KEYCODE_CVT_HANGAMA 1100
    IRKEY_EROSNOW 一键启动EROSNOW(hotkey没有配置) 670 KEYCODE_CVT_EROSNOW 1101
    IRKEY_BROWSE_WWW 一键启动浏览器(hotkey没有配置) 1116 KEYCODE_CVT_BROWSER 1055
    IRKEY_BROWSER_REFRESH 一键刷新浏览器页面 690 KEYCODE_BROWSER_REFRESH 1146

    浏览器有两个

    1、视若飞浏览器已支持

    2、Android原生浏览器(功能没有加完整)

    IRKEY_RETURN CHANNEL RECALL 625 KEYCODE_CHANNEL_RECALL 1032 功能实现在 智研apk LiveTVGlobal
    IRKEY_CHANNEL_LIST 一键打开频道列表 634 KEYCODE_CHANNEL_LIST 1031
    IRKEY_SLEEP 睡眠时间快捷键 629 KEYCODE_SLEEP_TIME 1046

    IRKEY_FREEZE

    FREEZE功能

    公版做法:

    1、通道全屏无信号下,不应响应freeze按键,弹个toast “Not available”;(553会响应,920做成不响应,972按照920做法实现)
    2、在小窗口播放节目,按下freeze键进入freeze状态,按home/确定键进入全屏播放,强制解freeze;
    3、在通道下全屏播放,按下freeze键进入freeze状态,按home跳转到Launcher小窗口时强制解freeze;
    4、在freeze状态下,执行删除频道,切换画面比例,菜单复位(menu reset),freeze需要解除;
    5、在freeze状态下,执行搜台,搜台结束时,应取消freeze;
    6、在freeze状态下,切通道时,应取消freeze;
    7、在freeze状态下,按CH+、CH-切频道时,应取消freeze。

    628	KEYCODE_FREEZE	1047	功能实现在tvapi
    
    • 1

    IRKEY_ECO ECO模式 1130 KEYCODE_CVT_ECO 1059

    UI在 global UI

    涉及宏配置:

    CVT_EN_ECO_BACKLIGHT_MOD

    CVT_DEF_ECO_HIGH_BACKLIGHT

    CVT_DEF_ECO_MID_BACKLIGHT

    CVT_DEF_ECO_LOW_BACKLIGHT

    CVT_DEF_ECO_OFF_BACKLIGHT

    逻辑在tvapi,看懂这个就知道怎么配置了

    IRKEY_ATV 一键打开ATV通道 1094 KEYCODE_TV_INPUT_ATV 1001

    通道键,公版默认支持

    INPUTSOURCE_ATV

    IRKEY_AV 一键打开AV通道 1103 KEYCODE_TV_INPUT_AV 1014
    通道键,公版默认支持

    INPUTSOURCE_AV

    IRKEY_HDMI 一键打开HDMI通道 1097 KEYCODE_TV_INPUT_HDMI 1008
    通道键,公版默认支持

    INPUTSOURCE_HDMI

    IRKEY_SYS_SETTING

    一键跳转到系统设置应用

    645	KEYCODE_IR_SYS_SETTING	1148	
    
    • 1

    公版默认支持,hotkey.xml已有,只需要配置按键即可

    KEYCODE_IR_SYS_SETTING

    IRKEY_FAC_AUTO_ATV_TUNING ATV一键自动搜台(只在ATV通道下有作用) 680 KEYCODE_FAC_AUTO_ATV_TUNING 1138
    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    EntryChannelSearch
    KEYCODE_FAC_AUTO_ATV_TUNING

    IRKEY_FAC_VOL_80 一键设置音量80 681 KEYCODE_FAC_VOL_80 1139 公版默认支持,功能实现在tvapi,配置按键即可
    IRKEY_FAC_SHIP_INIT 一键工厂复位 682 KEYCODE_FAC_SHIP_INIT 1140 公版默认支持,功能实现在tvapi,配置按键即可
    IRKEY_FAC_OPEN_AGING_MODE 一键打开老化模式(和 IRKEY_AT_AGING_MODE 有点重复) 683 KEYCODE_FAC_OPEN_AGING_MODE 1141
    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    com.cvte.tv.api.at.TvAgingService.commmand.aging_mode
    KEYCODE_FAC_OPEN_AGING_MODE

    IRKEY_FAC_CLOSE_AGING_MODE 一键关闭老化模式 684 KEYCODE_FAC_CLOSE_AGING_MODE 1142
    公版默认不支持,客户需求要配置hotkey.xml和对应的IR按键

    com.cvte.tv.api.at.TvAgingService.commmand.aging_mode_close
    KEYCODE_FAC_CLOSE_AGING_MODE

    这个是要在AgingKey,进入老化是hotkey

    IRKEY_EYE_SAFE 一键打开eye safe模式 685 KEYCODE_PIC_EYE_SAFE 1143 实现在tvapi processEyeSafeKeyEvent

    IRKEY_AT_AUTO_TUNING

    ~

    IRKEY_FACAPI_REST_TVRESET

    AT使用	
    
    
    AT使用
    
    • 1
    • 2
    • 3
    • 4

    IRKEY_AT_F1 AT F1复位功能 0x315 这些AT的按键都是没有上抛到Android层的

    IRKEY_AT_AGING_MODE 一键进入老化模式 0x300

    IRKEY_AT_VERSION 一键打开工厂菜单 System Info页面 0x301

    IRKEY_AT_F2 一键打开工厂菜单 0x303

    IRKEY_REPEAT 多媒体下设置播放模式,重复、单曲循环等 643 KEYCODE_MEDIA_REPEAT 1076

    IRKEY_AT_AUTO_TUNING
    0x302

    没作用
    
    • 1

    IRKEY_AT_WINDOW_SHOW
    0x310

    没作用
    
    • 1

    IRKEY_PAIRE_GUIDE 蓝牙配置页面 686 KEYCODE_PAIRE_GUIDE 1144 没有功能
    IRKEY_CHAOYE_FACTORY_REQUIREMENT 朝野客户工厂需求 687 KEYCODE_CHAOYE_FACTORY_REQUIREMENT 1145 因tvapi是继承972的,这部分功能没有验证,请勿使用
    IRKEY_FAV_ADD_ERASE
    633 KEYCODE_FAV_ADD_ERASE 1044 没有功能
    IRKEY_APP_BACK

    没有功能
    
    • 1

    IRKEY_ADJUST

    没有功能,不带VGA通道
    
    • 1

    IRKEY_DTV

    没有功能,不带DTV
    
    • 1

    IRKEY_AV2

    没有功能
    
    • 1

    IRKEY_HDMI2

    没有功能
    
    • 1

    IRKEY_APPS

    没有功能
    
    • 1

    IRKEY_PLAY_ONLY

    没有功能,可能后面会用到,follow 920 5.1
    
    • 1

    IRKEY_PAUSE_ONLY

    没有功能,可能后面会用到,follow 920 5.1
    
    • 1

    IRKEY_ATV_DTV

    没有功能,不带DTV
    
    • 1

    IRKEY_SLIPPING_UI

    没有功能,现在都用ir mouse一个按键 + 宏
    
    • 1

    CVT_EN_MOUSE_SLIDEMENU_KEY

    IRKEY_OPEN_TV_LIVE_APK

    没有功能,可能后面会用到,follow 920 5.1
    
    • 1

    IRKEY_ESHARE 一键启动ESHARE(hotkey没有配置) 671 KEYCODE_CVT_ESHARE 1102 Android 9.0不再用 eshare
    IRKEY_TT_TTX 图文键 626 KEYCODE_TTX_TEXT 1034
    图文功能未开发
    IRKEY_TT_CC
    IRKEY_TT_INDEX
    658 KEYCODE_TTX_INDEX 1035
    IRKEY_TT_MIX

    IRKEY_TT_HOLD
    654 KEYCODE_TTX_HOLD 1036
    IRKEY_TT_SIZE
    657 KEYCODE_TTX_SIZE 1037
    IRKEY_TT_REVEAL
    656 KEYCODE_TTX_REVEAL 1038
    IRKEY_TT_SUBPAGE
    655 KEYCODE_TTX_SUBPAGE 1039

  • 相关阅读:
    MySQL逻辑架构
    Scrum Master的职责
    网络工具Netwox和Wireshark详解
    react 中ref 属性的三种写法
    锁执行的过程
    SpringMVC自定义注解---[详细介绍]
    协议栈——收发数据(拼接网络包,自动重发,滑动窗口机制)
    LINUX系统下多进程的创建与通信前后台进程设计
    UVA208 消防车 Firetruck
    Centos下编译ffmpeg动态库
  • 原文地址:https://blog.csdn.net/qq_40009517/article/details/133660995