业界动态
InputManagerService实体按键及组合按键-Android12手机按键「InputManagerService实体按键及组合按键-Android12」
2025-01-12 20:56

InputManagerService启动-Android12
InputReader线程获取输入事件-Android12
InputDispatcher线程分发事件-Android12
InputChannel通道建立-Android12
InputChannel发送Input给App-Android12


一般手机侧边有三个实体按键power开关机键、音量上键、音量下键

  • KEYCODE_POWER = 26
    对应scancode码
  • KEYCODE_VOLUME_UP = 24
    对应scancode码
  • KEYCODE_VOLUME_DOWN = 25
    对应scancode码

1.1 实体按键添加

IMS:EventHub 设备添加和InputDevice转化 手机实体按键其实也是添加设备。其中关键方法、

 

1.2 从dumpsys input信息查看

下面是cepheus_input.txt(小米9机器,查看下面两个dump()信息
frameworks/native/services/inputflinger/reader/InputReader.cpp中InputReader::dump()
frameworks/native/services/inputflinger/reader/EventHub.cpp中EventHub::dump()
frameworks/native/services/inputflinger/reader/InputDevice.cpp中InputDevice::dump()
frameworks/native/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp中KeyboardInputMapper::dump()

在这里插入图片描述 在这里插入图片描述

设备表示Classes码
添加的设备节点
按键布局kl文件用来完成映射过程
kcm文件转化为显示在文本框的字符
与Classes码对应的Sources码
添加对应InputMapper文件:frameworks/native/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp

具体功能实现位置在 IMS:Input事件可拦截位置

  • 添加队列之前拦截
  • 发送之前拦截

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java#interceptKeyBeforeQueueing

 

2.1 没有启动完成KeyEvents不做任何事情,其中KEYCODE_POWER例外

如果我们还没有启动完成,KeyEvents不做任何事情。
例外:唤醒和电源键KeyEvents事件被转发到PowerManager,以允许它在引导期间从静态模式唤醒。

 

2.2 双击power键启动相机

Android S上 新增改变,注释解释为了解决多屏显示的场景下出现错误的状态

  • 处理启动相机,最终调用
    在这里插入图片描述
  • 中计算判断
    在这里插入图片描述
  • 注册到StatusBarManagerService
    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
  • 功能开关判断
 
 

frameworks/base/services/core/java/com/android/server/GestureLauncherService.java

 

2.3 五次点击power键启动SOS紧急呼叫

在 发现 中有,也是通过GestureLauncherServiceStatusBarManagerService服务调用到StatusBar.java中onEmergencyActionLaunchGestureDetected(),不同的是需要5次()点击power键
在这里插入图片描述
在这里插入图片描述

  • 功能开关
  • 有个疑问,不知道为什么这样设计,这里是优先处理

2.4 power长按功能 ,如唤起语音助手、关机、重启等弹框

回到 power键处理

  • PhoneWindowManager.java初始化是在initSingleKeyGestureRules中添加new PowerKeyRule(powerKeyGestures)
  • 长按调用PowerKeyRule中,powerLongPress(eventTime)处理长按功能
  1. 唤醒助手界面launchAssistAction()
  2. 唤醒语音助手launchVoiceAssist
  3. 弹出关机、重启、飞行模式等选项对话框showGlobalActions()
  4. 关闭所有窗口,执行
  • config_LongPressOnPowerBehavior配置值
    在这里插入图片描述

frameworks/base/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java

 

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

 

2.5 power键亮灭屏

接着查看power键点击亮灭屏,按下interceptKeyDown 抬起interceptKeyUp;关注抬起后操作未触发长按继续处理,可能是多次点击power键延时处理,看到onPress()onMultiPress()最终都是调用,这里没有处理通知亮屏逻辑。

  • 延时时间,默认时间是
    在这里插入图片描述
  • 查看时,mShortPressOnPowerBehavior基本有两种行为动作
  1. 灭屏sleepDefaultDisplayFromPowerButton()
  2. 回到HOME桌面
  • config_shortPressOnPowerBehavior配置值
    在这里插入图片描述

frameworks/base/services/core/java/com/android/server/policy/SingleKeyGestureDetector.java

 

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

 
2.5.1 power键亮屏

Android S上 新增改变处理等事件,优先处理,继续查看代码,发现PhoneWindowManager.java中有power键处理,亮屏处理就是在interceptPowerKeyDown()中

  • 持有power的WakeLock
  • wakeUp亮屏
 

2.6 音量上下键调节音量KEYCODE_VOLUME_DOWNKEYCODE_VOLUME_UP

这个一般就是耳机上的按键,主要控制音乐暂停播放等。这里主要查看KEYCODE_VOLUME_DOWNKEYCODE_VOLUME_UP按键

  • 通知到SystemUI中,这里看到只有按下DOWN时通知,没有看到抬起UP时通知
  • 调用MediaSessionService.java#dispatchVolumeKeyEvent()调节音量
 
 

在此查看handleKeyGesture方法,优先处理;下面具体查看组合按键规则添加

 

3.1 POWER+VOLUME_DOWN截图功能

添加,截图

 

3.2 VOLUME_DOWN+VOLUME_UP辅助功能快捷方式

添加,执行激活辅助功能

 

3.3 POWER+VOLUME_UP 静音

添加,执行执行中区分两种行为

  • 执行 设置 静音模式RINGER_MODE_SILENT
  • 执行 弹出关机、重启、飞行模式等选项对话框;power长按功能中也有行为实现该功能
    以上就是本篇文章【InputManagerService实体按键及组合按键-Android12手机按键「InputManagerService实体按键及组合按键-Android12」】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/6999.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
Tap Translate Screen翻译器手机版手机在线翻译「Tap Translate Screen翻译器手机版」
Tap Translate Screen翻译器手机版app是一款实用的翻译工具应用,可以帮助用户实时翻译屏幕上的文字,支持多种语言的互译,在线
今天起,手机充电请调整一下!手机多少电量充电合适「今天起,手机充电请调整一下!」
901公司招聘计划手机电量还剩多少,对许多人而言都是一个关键的问题。人们对手机充电的强烈需求,也让市面上催生出许多噱头产品
在手机上怎么炒股票,同花顺可以炒股吗手机炒股「在手机上怎么炒股票,同花顺可以炒股吗」
您好,很高兴为您解答问题。同花顺可以炒股,现在很多人通过手机炒股,因为它方便快捷,可以随时随地跟踪行情和进行交易。以下是
4月14日美股盘前要闻
钛媒体App 4月14日消息,美股盘前要闻:1. 美国股指期货集体上涨,截至目前,道指期货涨1.08%,标普500指数期货涨1.59%,纳斯达
警惕“高阶智驾”陷阱!诱导“解放双手”,最高可判处死刑
近期,因驾驶人错误使用辅助驾驶导致的交通事故时有发生,引起社会关注讨论。部分驾驶人对辅助驾驶的认知不到位,误以为“辅助驾
中房协将于4月21日-22日召开“中小房企稳健发展经验交流会”
观点网讯:4月8日,中国房地产业协会宣布,为深入探讨中小房企、本土房企稳健经营经验,促进企业间相互学习、交流借鉴,中国房地
奈雪的茶2024年营收近50亿元
新京报讯(记者王子扬)3月27日,新茶饮企业发布2024年年报显示,2024年全年营收近50亿元。截至2024年12月31日,奈雪的茶全国门
荣耀首款8000mAh电池手机今日开售 起售价仅1699元
  【CNMO科技消息】据荣耀手机官方消息,4月18日上午10点08分,荣耀Power正式开售,这是今年荣耀旗下首款8000mAh超大电池手机
假面骑士雷杰多腰带模拟器假面骑士游戏手机版「假面骑士雷杰多腰带模拟器」
假面骑士雷杰多腰带模拟器是一款极具挑战性的游戏,能让玩家获得更多的腰带,还能让玩家利用角色的技能来进行战斗,可尝试快速变
星际争霸2破解补丁星际争霸手机版下载「星际争霸2破解补丁」
星际争霸2破解补丁是款很实用的游戏补丁工具。玩家们使用这款补丁之后就可以免费激活星际争霸2这款游戏的各种文件,没有任何的限
相关文章