首页 > 其他分享 >实体物理音量键替换为home键

实体物理音量键替换为home键

时间:2024-06-17 19:31:57浏览次数:9  
标签:java policyFlags dev handler 音量 input home event2 替换

127|YT_r:/ # getevent -l
add device 1: /dev/input/event1
  name:     "goodix-ts"
add device 2: /dev/input/event2
  name:     "adc-keys"
add device 3: /dev/input/event0
  name:     "rk805 pwrkey"
/dev/input/event2: EV_KEY       KEY_VOLUMEUP         DOWN
/dev/input/event2: EV_SYN       SYN_REPORT           00000000
/dev/input/event2: EV_KEY       KEY_VOLUMEUP         UP
/dev/input/event2: EV_SYN       SYN_REPORT           00000000

实践:
--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2732,7 +2732,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {

	@Override
    public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
            int policyFlags) {
            ...
             Log.d(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
                     + repeatCount + " keyguardOn=" + keyguardOn + " canceled=" + canceled);
         }
-
+        Log.d("tag","policyFlags:"+policyFlags);//长按也会产生不同的policyFlags 
+        if(keyCode == KeyEvent.KEYCODE_VOLUME_UP && policyFlags == 1644167168){
+		//mContext.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS))//进入Settings app
+            DisplayHomeButtonHandler handler = mDisplayHomeButtonHandlers.get(displayId);
+            if (handler == null) {
+                handler = new DisplayHomeButtonHandler(displayId);
+                mDisplayHomeButtonHandlers.put(displayId, handler);
+            }
+            return handler.handleHomeButton(focusedToken, event);
+        }
         //infrare simulate mouse
         boolean isBox = "box".equals(SystemProperties.get("ro.target.product"));
         if(isBox){
		...
		
demo:
1.先获取按键对应的key

2.找到系统对应的  .kl 文件,修改按键的映射

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

interceptKeyBeforeQueueing(KeyEvent event, int policyFlags)方法中做按键对应的逻辑。
原文链接:https://blog.csdn.net/qq_35611559/article/details/79915034

标签:java,policyFlags,dev,handler,音量,input,home,event2,替换
From: https://www.cnblogs.com/kato-T/p/18253081

相关文章

  • 安装、配置和使用AdGuard Home来实现家庭网络的广告和隐私保护;进一步深入学习和掌握Ad
    AdGuardHome是一个功能强大的网络广告拦截和隐私保护工具,它的底层原理涉及到多个方面的技术和工作原理。以下是关于AdGuardHome底层原理的概要:DNS拦截与过滤:AdGuardHome通过拦截DNS查询请求并返回虚假的响应来实现广告和恶意网站的过滤。它会拦截客户端设备发送的......
  • 国内替换 Confluence 的11款主流选择
    Confluence本身并不是开源的,而是一个基于订阅模式的商业产品。而类似于confluence的有11款知识库软件,包括:PingCode知识库、BlueSpice、MediaWiki、DokuWiki、Nuclino、ClickUp、XWiki、BookStack、TiddlyWiki、Bloomfire和Quip。虽然Confluence常被提及,特别是在团队成......
  • 代码随想录刷题记录(7)| 字符串(344.反转字符串,541. 反转字符串II,卡码网:54.替换数字)
    目录(一)反转字符串1.题目描述2.思路3.解题过程(二)反转字符串Ⅱ1.题目描述2.思路3.解题过程(三)替换数字1.题目描述2.思路3.解题过程(一)反转字符串344.反转字符串-力扣(LeetCode)1.题目描述        编写一个函数,其作用是将输入的字符串反转过......
  • 使用 Docker 卷来实现替换容器内文件为宿主机上的
    要将容器内的/usr/share/nginx/html目录替换成宿主机上的/path/html目录里的内容,你可以使用Docker卷来实现。以下是你需要做的修改:停止并删除现有的前端容器(如果它正在运行):docker-composedown--remove-orphans修改docker-compose.yml文件,在frontend服务中......
  • 向数组指定位置中插入或者删除,替换数据的方法
    JS在数组指定位置插入/删除/替换数据的方法splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。语法糖:arrayObject.splice(index,howmany,item1,.....,itemX)参数说明:参数 描述index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howm......
  • 代码随想录算法训练营第八天 | 344.反转字符串 541.反转字符串Ⅱ 卡玛网:54.替换数字
    344.反转字符串题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。解题:思路:双指针,秒了点击查看代码classSolution:defreverseString......
  • 【JavaScript】内置对象 - 字符串对象 ⑦ ( String 字符串替换 | replace 函数 | repl
    文章目录一、String字符串替换1、replace函数替换字符串2、使用replace函数替换所有匹配字符串3、replaceAll函数替换字符串二、String字符串转数组1、split函数切割字符串2、代码示例-切割字符串String字符串对象参考文档:https://developer.mozilla.......
  • Macbook M芯片Homebrew与git的安装与配置
    MacbookM芯片Homebrew与git的安装与配置Homebrew的安装与配置搜索Homebrew;找到如下网址https://brew.sh/把以上命令复制到终端执行后,发现并不能下载;如果你像我一样也是不通的,可以使用国内源,将如下命令复制到终端:/bin/zsh-c"$(curl-fsSLhttps://gitee.com/cunkai/H......
  • 使用Druid替换springboot默认连接池HikariPool
    使用Druid替换springboot默认连接池HikariPool1.在pom文件中增加Druid依赖<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.23</version></dependency>2.在a......
  • B2135单词替换
    题目描述输入一个字符串,以回车结束(字符串长度 ≤200≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入格式第 11 行是包含多个单词的字符串 ......