业界动态
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/ , 查看更多   
最新文章
厦门三区小学一年级已经实现随迁子女公办学位自由?这些学校招收积分入学学生
近日六区公布积分入学学位积分入学学位剩余近日,六区公布可以提供给随迁子女积分入学的学位,今年总积分入学学位是18135+,之所
大动作!全球资管巨头抄底中国房地产
外资巨头宣布抄底中国资产,这次瞄准的是不动产。1全球资管巨头抄底中国房地产!全球资管巨头施罗德资本与浙江西子国际达成战略
韩国技术改造美国船厂,韩华称十年内实现年产10艘
【文/观察者网 山猫】去年年底,韩国韩华集团以1亿美元的价格在美国收购了一座原属于挪威业主的造船厂——费城造船厂,随即船厂
假山假景假脸,短剧《窃心》爆火,让多少内娱流水线民国剧脸红
今年的国剧市场如同过山车,从巅峰到谷底再重攀高峰,一路跌宕起伏。比如《藏海传》点燃整个国剧市场,引起全民追剧热潮,而本以
军事晚报AI速递:今日军事热点一览 丨2025年8月21日
  军事领域动态复杂,事件可能迅速改变全球安全格局。我们整理了今日最重要的军事新闻,包括关键行动和政策变化,让您清晰把握
原包PA66 GVS-5H 瑞士EMS 耐化学性
C-Cushioning Charm, Hermione spluttered, as Ron pulled her to her feet, but toHarrys horror he saw that she was no longe
征信逾期五年超十次?别慌!2025最新解密与攻略,速来抄作业!
征信逾期五年超十次?别慌!2025最新解密与攻略,速来抄作业!朋友你是不是也遇到过这类情况?征信逾期五年超十次,感觉天都塌了
SAB47减速机
上海弗麦传动机械有限公司 主要材料 1、箱体:铸铁; 2、齿轮:低碳合金钢,碳、氮共渗处理(精磨后保持齿面硬度HRC60,硬层厚度
九类危险品进口流程?
九类属于杂类,常见的UN3077 UN3082九类也是危险品里面最不危险品的一类全国有40%的危险品是从上海港进口的。危险品进口一定要提
乡村学校少年宫丨池淮镇中心小学:快乐不“打烊” 相伴共成长
学校依托“乐善课程体系”,深入挖掘乡土特色,立足学情,开设了“棋”思妙想、“鼓乐”铿锵、“武”动奇迹、“琴”声悠扬、“足