Android14 AOSP支持短按关机
修改frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
diff --git a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 044da84e7..3cd9cf5f0 100644
--- a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -697,6 +697,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {private static final int MSG_LOG_KEYBOARD_SYSTEM_EVENT = 26;//----rk-code----private static final int MSG_SLEEP_SHOW_DREAM = 27;
+ //add by donggua
+ private static final int MSG_POWER_SHUT_DOWN = 28; //支持短按关机private int screenWidth;private int screenHeight;
@@ -822,6 +824,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {case MSG_LOG_KEYBOARD_SYSTEM_EVENT:handleKeyboardSystemEvent(KeyboardLogEvent.from(msg.arg1), (KeyEvent) msg.obj);break;
+ case MSG_POWER_SHUT_DOWN://add by donggua,支持短按关机
+ mWindowManagerFuncs.shutdown(false);
+ break;}}}
@@ -4526,19 +4531,32 @@ public class PhoneWindowManager implements WindowManagerPolicy {}case KeyEvent.KEYCODE_POWER: {
- logKeyboardSystemsEventOnActionUp(event, KeyboardLogEvent.TOGGLE_POWER);
- EventLogTags.writeInterceptPower(
- KeyEvent.actionToString(event.getAction()),
- mPowerKeyHandled ? 1 : 0,
- mSingleKeyGestureDetector.getKeyPressCounter(KeyEvent.KEYCODE_POWER));
- // Any activity on the power button stops the accessibility shortcut
- result &= ~ACTION_PASS_TO_USER;
- isWakeKey = false; // wake-up will be handled separately
- if (down) {
- interceptPowerKeyDown(event, interactiveAndOn);
- } else {
- interceptPowerKeyUp(event, canceled);
- }
+ // logKeyboardSystemsEventOnActionUp(event, KeyboardLogEvent.TOGGLE_POWER);
+ // EventLogTags.writeInterceptPower(
+ // KeyEvent.actionToString(event.getAction()),
+ // mPowerKeyHandled ? 1 : 0,
+ // mSingleKeyGestureDetector.getKeyPressCounter(KeyEvent.KEYCODE_POWER));
+ // // Any activity on the power button stops the accessibility shortcut
+ // result &= ~ACTION_PASS_TO_USER;
+ // isWakeKey = false; // wake-up will be handled separately
+ // if (down) {
+ // interceptPowerKeyDown(event, interactiveAndOn);
+ // } else {
+ // interceptPowerKeyUp(event, canceled);
+ // }
+ // add my donggua
+ // 支持短按电源事件关机
+ if(down){
+ if(mPowerManager.isScreenOn()) {
+ Message msg = mHandler.obtainMessage(MSG_POWER_SHUT_DOWN);
+ msg.setAsynchronous(true);
+ mHandler.sendMessageDelayed(msg,
+ ViewConfiguration.get(mContext).getDeviceGlobalActionKeyTimeout());
+ } else {
+ Log.e("GO to Wakeup--------> TTTEEE","keyCode :"+keyCode);
+ wakeUpFromPowerKey(event.getDownTime());
+ }
+ } break;}
相关文章:
Android14 AOSP支持短按关机
修改frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java diff --git a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java in…...
C# 和 go 关于can通信得 整理
在C#中开发CAN(Controller Area Network)通信接口时,确实有一些现成的NuGet包可以简化你的开发工作。这些库通常提供了与CAN硬件接口通信所需的基本功能,如发送和接收CAN消息。下面是一些常用的NuGet包: PCANBasic.NET…...
vue常用命令汇总
nvm 一个nodejs版本管理工具,解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 npm 可以管理 nodejs 的第三方插件。 vue-cli 是Vue提供的一个官方cli,专门为单页面应用快速搭建繁杂的脚手架。 nginx 是一个高性能的HTTP和反向代理we…...
【C++习题】18.逆波兰表达式求值
题目:逆波兰表达式求值 链接🔗:逆波兰表达式求值 题目: 代码: class Solution {public:int evalRPN(vector<string>& tokens) {stack<int> s;for (size_t i 0; i < tokens.size(); i){string&a…...
本地如何使用 yarn link 调试本地 npm 包
如何使用 yarn link 调试本地 npm 包: 在前端开发中,通常我们会开发并使用许多 npm 包来实现项目的功能。随着开发的深入,我们经常需要调试或修改某些 npm 包的源码。如果你正在开发一个 npm 包,并且希望在本地项目中进行调试&am…...
江恩45年一书的自己一点读书见解
读了下江恩的华尔街45年,有些浅薄的体会,记录下 江恩的华尔街45年里面,感触比较深刻的有以下几点: 1.为什么会亏钱 1.利用大仓位来过度交易,违背了资本安全的原则。买卖过于频繁 2.没有用止损单来保护你的交易。 3.缺…...
影响 Linux、Unix 系统的 CUPS 漏洞可导致 RCE
在经过大量炒作和第三方过早泄露信息之后,安全研究员 Simone Margaritelli 公布了有关通用 UNIX 打印系统 (CUPS) 中的四个零日漏洞的详细信息。 这些漏洞可被远程、未经身份验证的攻击者滥用,在易受攻击的 Linux 和类 Unix 系统上实现代码执行。 CUPS…...
【汇编】思考汇编中的两个基本问题
1. 若干年前的疑问 几年前还在大学学习汇编时,不管是考试还是课程设计,其实都很顺利。但是心里一直对什么时候使用哪个寄存器存在疑惑,编写汇编时,没有十足的把握,都是抱着试一试的心态去完成了课程任务。 工作八年有…...
Nest Dynamic modules 笔记
Nest Dynamic modules 文档地址👈 记录Dynamic modules是因为确实抽象,文档并没有很详细的指出不同方式创建动态模块的区别 两种不同的动态模块创建方式 静态模块传统动态模块方式实现三种不同的方法命名使用ConfigurableModuleBuilder异步动态模块如果…...
生成式AI、大模型、多模态技术开发与应用学习清单
学习目的: 了解AIGC发展现状与核心技术。 掌握Transformer核心开发技术。掌握向量数据库的工作原理、检索算法、主要开源数据库。掌握大模型调用、微调方法。掌握以GPT大语言模型为基础的工作原理。 掌握AIGC技术在跨模态领域的应用技术。了解GPT提示工程和AIGC的安…...
STM32 CubeMx HAL库 独立看门狗IWDG配置使用
看门狗这里我就不多介绍了,能搜到这篇文章说明你了解 总之就是一个单片机重启程序,设定好超时时间,在超时时间内没有喂狗,单片机就会复位 主要应用在单片机异常重启方面,比如程序跑飞(注意程序跑飞时你就…...
网络安全渗透测试概论
渗透测试,也称为渗透攻击测试是一种通过模拟恶意攻击者的手段来评估计算机系统、网络或应用程序安全性的方法。 目的 旨在主动发现系统中可能存在的安全漏洞、脆弱点以及潜在风险,以便在被真正的恶意攻击者利用之前,及时进行修复和加固&…...
【大数据技术基础】【记录Ubuntu 16.04升级到18.04】Ubuntu的一个版本升级到另一个版本
在 Ubuntu 操作系统中进行软件更新和系统升级 Ubuntu Kylin 16.04 LTS 系统进行系统升级到 Ubuntu 18.04.6 LTS 版本 升级提示:系统弹出提示框,告知用户有新版本的 Ubuntu 可用,询问用户是否想要升级。 认证窗口:显示了一个认证…...
知识库系统,集成neo4j,集成activiti工作流,集成es全文检索,知识图谱血缘关系,nlp知识库
一、项目介绍 一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,一款让企业知识变为实打实的数字财富的系统,应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台? 助力企业…...
批量合并多个Excel到一个文件
工作中,我们经常需要将多个Excel的数据进行合并,很多插件都可以做这个功能。但是今天我们将介绍一个完全免费的独立软件【非插件】,来更加方便的实现这个功能。 准备Excel 这里我们准备了两张待合并的Excel文件 的卢易表 打开的卢易表软件…...
CNCF云原生生态版图-项目和产品综合分析
CNCF云原生生态版图-项目和产品综合分析 CNCF云原生生态版图-项目和产品综合分析整体统计分析中国研发人员贡献项目和产品其中,纳入 CNCF 管理的开源项目 链接 CNCF云原生生态版图-项目和产品综合分析 整体统计分析 在对云原生技术选型时,优先选择经过 …...
MySQL生产环境备份脚本
全量备份脚本,其中BakDir,ZlbakDir,LogFile需要自己创建 #!/bin/bash export LANGen_US.UTF-8# 指定备份目录 BakDir/root/beifen/data/mysqlbak/data/allbak # 指定增量备份目录 ZlbakDir/root/beifen/data/mysqlbak/data/zlbak # 备份日志…...
leetcode 3224. 使差值相等的最少数组改动次数
题目链接:3224. 使差值相等的最少数组改动次数 题目: 给你一个长度为 n 的整数数组 nums ,n 是偶数 ,同时给你一个整数 k 。 你可以对数组进行一些操作。每次操作中,你可以将数组中任一元素替换为 0 到 k 之间的任一…...
多线程动态库里面调用静态库分配内存函数导致的崩溃cltp汇编指令导致
1、概述 有这样的一个场景,我有一个动态库myso.so里面有函数start_crash(),用到静态库的内存分配函数,其实静态库里面的static.a 里面就封装了一个函数叫system_malloc(),函数返回的是分配的内存地址,然后发现,我在测试demo里面创…...
力扣刷题TOP101: 31.BM38 在二叉树中找到两个节点的最近公共祖先
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的: 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找o1 和 o2 的最近公共祖先节点。 思路 这个任务目和上一题在二叉搜索树中找到两个节点的最近公共祖先有点类…...
OpenClaw插件开发指南:为百川2-13B-4bits定制飞书会议纪要生成器
OpenClaw插件开发指南:为百川2-13B-4bits定制飞书会议纪要生成器 1. 为什么需要定制会议纪要生成器 去年参加完一场跨部门会议后,我花了整整两小时整理会议纪要。当时就想:如果能自动提取关键信息、生成结构化摘要该多好。尝试过几个SaaS工…...
YOLOE开源镜像生产环境部署:YOLOE-v8m-seg在Docker Swarm集群实践
YOLOE开源镜像生产环境部署:YOLOE-v8m-seg在Docker Swarm集群实践 1. 引言:从单机到集群的跨越 如果你已经体验过YOLOE官版镜像在单台服务器上的强大能力,比如用文本描述就能识别图片里的任何物体,或者用一张示例图就能完成精准…...
Vue3集成百度地图GL版:从自定义样式到动态轨迹绘制实战
1. Vue3集成百度地图GL版的前期准备 第一次在Vue3项目里用百度地图GL版时,我踩了不少坑。这里分享下最稳妥的集成方案,帮你避开那些我趟过的雷。首先得明白,百度地图GL版是基于WebGL技术的新一代地图API,相比传统版本性能更好、效…...
RPA流程进阶:在Uibot中集成Python插件实现复杂数据处理
1. 为什么要在Uibot中集成Python插件? 很多刚开始接触RPA的朋友可能会有疑问:Uibot本身已经提供了丰富的自动化命令,为什么还要折腾Python插件?这个问题我在三年前第一次用Uibot处理Excel报表时就深有体会。当时需要合并20多个分公…...
跨越平台鸿沟:在非ROS环境中通过Rosbridge与ROS 2 Humble高效通信
1. 为什么需要Rosbridge? 在机器人开发领域,ROS 2 Humble已经成为主流操作系统之一。但现实情况是,很多开发者可能需要在Windows、MacOS甚至是没有安装ROS的Linux环境下工作。这时候就面临一个难题:如何让这些非ROS环境与ROS 2系统…...
告别窗口限制:WindowResizer让Windows桌面管理效率提升300%
告别窗口限制:WindowResizer让Windows桌面管理效率提升300% 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在Windows系统使用过程中,您是否经常遭遇窗口尺…...
GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码)
GPCC数据不止看趋势:手把手教你用MATLAB做降水信号的谐波分析(附周年振幅相位代码) 长江流域的降水变化对农业生产、水资源管理和生态保护都具有重要意义。当我们拿到GPCC的月尺度降水数据时,除了绘制时间序列图观察趋势外&#x…...
Pixel Aurora Engine实战应用:教育类App像素插画素材自动化生产
Pixel Aurora Engine实战应用:教育类App像素插画素材自动化生产 1. 教育类App的像素素材需求 在当今教育类App开发中,视觉素材的质量直接影响用户体验和学习效果。传统设计流程面临三大痛点: 人力成本高:每个插画需要设计师手动…...
openpilot终极指南:快速实现300+车型自动驾驶辅助的完整方案
openpilot终极指南:快速实现300车型自动驾驶辅助的完整方案 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Tr…...
Nanbeige 4.1-3B Streamlit WebUI效果展示:气泡时间戳与消息状态可视化
Nanbeige 4.1-3B Streamlit WebUI效果展示:气泡时间戳与消息状态可视化 1. 引言:当大模型遇见沉浸式聊天界面 想象一下,你正在本地部署一个强大的开源大语言模型,比如南北阁的4.1-3B版本。你通过命令行与它对话,看着…...
