Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑
该功能在系统设置-显示-拿起设备时唤醒
alps\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\display\LiftToWakePreferenceController.javapublic boolean isAvailable() {SensorManager sensors = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null;
}
通过以上代码可以控制该功能是不是在设置中显示,也可以看出来用到的sensor是Sensor.TYPE_WAKE_GESTURE,当然这个sensor是需要驱动配置好之后,上层才可以正常的控制该功能的开启和关闭。

alps\frameworks\base\core\java\android\hardware\SensorManager.javapublic Sensor getDefaultSensor(int type) {// TODO: need to be smarter, for now, just return the 1st sensorList<Sensor> l = getSensorList(type);boolean wakeUpSensor = false;// For the following sensor types, return a wake-up sensor. These types are by default// defined as wake-up sensors. For the rest of the SDK defined sensor types return a// non_wake-up version.if (type == Sensor.TYPE_PROXIMITY || type == Sensor.TYPE_SIGNIFICANT_MOTION|| type == Sensor.TYPE_TILT_DETECTOR || type == Sensor.TYPE_WAKE_GESTURE|| type == Sensor.TYPE_GLANCE_GESTURE || type == Sensor.TYPE_PICK_UP_GESTURE|| type == Sensor.TYPE_LOW_LATENCY_OFFBODY_DETECT|| type == Sensor.TYPE_WRIST_TILT_GESTURE|| type == Sensor.TYPE_DYNAMIC_SENSOR_META || type == Sensor.TYPE_HINGE_ANGLE) {wakeUpSensor = true;}for (Sensor sensor : l) {if (sensor.isWakeUpSensor() == wakeUpSensor) return sensor;}return null;
}alps\frameworks\base\services\core\java\com\android\server\policy\WakeGestureListener.javapublic abstract void onWakeUp();public boolean isSupported() {synchronized (mLock) {return mSensor != null;}
}public void requestWakeUpTrigger() {synchronized (mLock) {if (mSensor != null && !mTriggerRequested) {mTriggerRequested = true;mSensorManager.requestTriggerSensor(mListener, mSensor);}}
}public void cancelWakeUpTrigger() {synchronized (mLock) {if (mSensor != null && mTriggerRequested) {mTriggerRequested = false;mSensorManager.cancelTriggerSensor(mListener, mSensor);}}
}alps\frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.javaclass MyWakeGestureListener extends WakeGestureListener {MyWakeGestureListener(Context context, Handler handler) {super(context, handler);}@Overridepublic void onWakeUp() {synchronized (mLock) {if (shouldEnableWakeGestureLp()) {performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, false,"Wake Up");wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture,PowerManager.WAKE_REASON_GESTURE, "android.policy:GESTURE");}}}
}
关键的方法是onWakeUp(),这个方法就是抬手的动作触发的操作,如果我们要在抬手的时候处理一些事情,那么可以在这个方法里面操作。
@Override
public void onWakeUp() {synchronized (mLock) {if (shouldEnableWakeGestureLp()) {performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, false,"Wake Up");wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture,PowerManager.WAKE_REASON_GESTURE, "android.policy:GESTURE");}// Add on 2023/4/10 for startif ((SystemProperties.getInt("ro.xxx_support", 0) == 1|| SystemProperties.getInt("ro.xxx_support", 0) == 1)&& Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.LIFT_ON, 1) == 1) {Log.d("HZH", "PhoneWindowManager MyWakeGestureListener onWakeUp 890: open vicescreen");Intent intent = new Intent();intent.setComponent(new ComponentName("com.xxx.xxx", "com.xxx.xxx.XService"));intent.putExtra("broadcast_type", 109);mContext.startForegroundService(intent);}// Add on 2023/4/10 for end}
}
l流程比较简单,主要是给大家提供一个思路,如果有抬手相关的需求的时候,相信是会有帮助的
相关文章:
Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑
该功能在系统设置-显示-拿起设备时唤醒 alps\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\display\LiftToWakePreferenceController.javapublic boolean isAvailable() {SensorManager sensors (SensorManager) mContext.getSystemServ…...
thinkPHP5.0字符集修改为utf8mb4
Q:为什么要用utf8mb4 A:utf8mb4可以直接保存emoji字符 MySQL修改字符集 // 数据表编码改为utf8mb4 function to_utf8mb4() {$database config("database.database");$sql "ALTER DATABASE {$database} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;&q…...
[架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)
目录 一、什么是计算机应用程序 1.1 什么是应用程序 1.2 应用程序的分类 二、应用程序架构分类详解与演进阶段 三、应用程序架构(Application Architecture) 3.1 基本类型 3.2 云应用程序架构 一、什么是计算机应用程序 1.1 什么是应用程序 计算…...
Jackson 反序列化失败,出现JSON: Unrecognized field
问题: 这边在灰度发布的时候,其他未发布的机器出现过could not read JSON: Unrecognized field “type”,这个报错,原因是有一个表新加了一个字段,并且灰度发布了一台机器,刚好有请求命中这台机器…...
vscode代码快捷输入
Vscode代码片段快捷输入 常用的代码片段为了避免重复输入,可以使用Vsco的中用户代码片段进行设置,这样就可以实现快捷输入. 操作流程 如下 打开vscode的设置 2. 找到用户代码片段 3. 选择模板 4. 然后写入代码片段即可 上面的代码片段可以设置多个,看自己 重点关注的是 prefi…...
【微服务】Feign 整合 Sentinel,深入探索 Sentinel 的隔离和熔断降级规则,以及授权规则和自定义异常返回结果
文章目录 前言一、Feign 整合 Sentinel1.1 实现步骤1.2 FallbackFactory 示例 二、Sentinel 实现隔离2.1 隔离的实现方法2.2 Sentinel 实现线程隔离示例 三、熔断降级规则3.1 熔断降级原理及其流程3.2 熔断策略 —— 慢调用3.3 熔断策略 —— 异常比例和异常数 四、授权规则4.1…...
Kurento多对多webrtc会议搭建测试
环境ubuntu18.04 KMS版本6.13.0 多对多通信demo7.0.0 KMS运行起来后,通过运行它的一个个demo,来实现不同的功能,它的demo很多如下: https://github.com/Kurento 里面有一对一,多对多,还有一些特效的demo。…...
蓝桥杯 (饮料换购,C++)
思路: 1、先加上初始的饮料数n。 2、再加上n可以兑换的饮料数n/3,求多余的瓶盖n%3。循环直至瓶盖数无法兑换新的一瓶饮料。 #include<iostream> using namespace std; int main() {int n,a0,sum0;cin >> n;sum n;while (n){n n a;//加上上…...
《java核心卷Ⅰ》知识点总结(可作面试题)
🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…...
发成绩小程序,一键群发成绩给家长,省事
大家好!又到了学期末,是不是又开始为了学生的成绩而烦恼了?别担心,今天就给大家带来一款超级实用的成绩查询系统!从此告别繁琐的手动操作,一键群发成绩给家长,轻松又愉快! 成绩查询系…...
barzilar_borwein算法微调函数的优化收敛
import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2加载barzilar_borwein算法 import optimtool.unconstrain as ou barzilar_borwein ou.gradient_descent.barzilar_borwein初始化输入数据 f ( x ) ∑ i 1 n / 2 c ( x 2 i −…...
SpringBoot篇---第一篇
系列文章目录 文章目录 系列文章目录一、为什么要用SpringBoot二、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?三、运行Spring Boot有哪几种方式?一、为什么要用SpringBoot Spring Boot 优点非常多,如: 一、独立运行 Spring Boot而且内嵌了各种servlet容器,…...
算法通关村第二关-白银挑战反转链表拓展问题
大家好我是苏麟 , 今天聊一聊链表反转拓展问题 . 反转链表拓展问题 1.指定区间反转 描述 : 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 题目…...
【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕
说在前面 树莓派版本:4bLCD模块:ST7789V2 240*280 LCD树莓派系统:Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本:rustc 1.73.0 模块详情 某雪的1.69inch LCD模块,包含杜邦线 准备工作 树莓派…...
WebSocket—STOMP详解(官方原版)
WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未作定义。该协议定义了一种机制,供客户端和服务器协商在WebSocket之上使用的子协议(即更高级别的消息传递协议),以定义各自可以发送…...
淘宝/天猫获取购买到的商品订单物流信息 API分享
开发背景: 淘宝是中国最大的电商平台之一,拥有海量的用户和卖家。为了方便卖家和买家之间的交易,淘宝提供了订单物流API的开发接口。通过这个接口,卖家可以快速获取到买家的订单信息以及物流状态,从而更好地管理自己的…...
PS软件 点击 “另存为 Web 所用格式” ,提示错误 无法完成操作 系统找不到指定路径
软件:Adobe Photoshop 问题: PS 点击 另存为 Web 所用格式 ,提示错误 无法完成操作 系统找不到指定路径 解决: 如果是Win10以上的系统,出现这种情况基本就是被系统自带的杀毒软件阻止了,可以看一下电脑右…...
解决“您点击的链接已过期”;The Link You Followed Has Expired的问题
今天WP碰到一个坑。无论发布文章还是更新插件、更换主题都是这么一种状态“您点击的链接已过期”;The Link You Followed Has Expired 百度出来的答案都是修改post_max_size 方法1. 通过functions.php文件修复 这种方法更容易,只需将以下代码添加到Wor…...
说说对ajax、axios、jsonp的理解
下面是对 AJAX、Axios 和 JSONP 的简要说明: 1:AJAX(Asynchronous JavaScript and XML): AJAX 是一种用于创建异步通信的技术,通过在后台与服务器进行数据交换,实现页面的局部更新,…...
黄金代理这么多,怎么选?
目前,现货黄金代理已成为了市场中成熟的模式,我们只要在搜索引擎上搜索如何在市场中开户,会搜到各种各样的黄金代理,其中更是不乏服务非常优秀的。部分投资者早就接受了黄金代理的存在,并且率先开始在黄金代理中进行开…...
三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能...
三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业…...
【OpenClaw】通过 Nanobot 源码学习架构---()总体韭
核心摘要:这篇文章能帮你 ?? 1. 彻底搞懂条件分支与循环的适用场景,告别选择困难。 ?? 2. 掌握遍历DOM集合修改属性的标准姿势与性能窍门。 ?? 3. 识别流程控制中的常见“坑”,并学会如何优雅地绕过去。 ?? 主要内容脉络 ?? 一、痛…...
Nginx 学习总结犊
1. 引入 在现代 AI 工程中,Hugging Face 的 tokenizers 库已成为分词器的事实标准。不过 Hugging Face 的 tokenizers 是用 Rust 来实现的,官方只提供了 python 和 node 的绑定实现。要实现与 Hugging Face tokenizers 相同的行为,最好的办法…...
抖音下载器技术架构与实战指南:高效获取无水印视频的创新方案
抖音下载器技术架构与实战指南:高效获取无水印视频的创新方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...
PyTorch 3.0静态图分布式训练落地实战:从Dynamo+DDP到FSDP+Compile的5步极简部署流程
第一章:PyTorch 3.0静态图分布式训练全景概览PyTorch 3.0 引入了原生静态图编译能力(TorchDynamo Inductor 后端深度集成),结合 torch.distributed 的增强型 API,构建出面向大规模集群的高性能分布式训练新范式。与传…...
OSHI 储能系统监控:电池硬件状态管理终极指南 [特殊字符]
OSHI 储能系统监控:电池硬件状态管理终极指南 🚀 【免费下载链接】oshi Native Operating System and Hardware Information 项目地址: https://gitcode.com/gh_mirrors/os/oshi OSHI(Operating System and Hardware Information&…...
WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试
WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试 【免费下载链接】wscat WebSocket cat 项目地址: https://gitcode.com/gh_mirrors/ws/wscat wscat 是一款轻量级的 WebSocket 命令行工具,能帮助开发者快速测试和调试 WebSocket 连接&a…...
避开RISC-V流水线的那些“坑”:一次搞懂Load-Use Hazard与数据前递的边界条件
RISC-V流水线设计的隐秘陷阱:深度解析Load-Use Hazard与数据前递的临界条件 当你在RISC-V处理器的仿真测试中反复检查数据前递逻辑,却发现某些lw指令序列仍然无法正确执行时,那种挫败感我深有体会。这不是简单的代码错误,而是处理…...
Vikunja 社区贡献指南:如何成为开源项目的一份子
Vikunja 社区贡献指南:如何成为开源项目的一份子 【免费下载链接】api The to-do app to organize your life. 项目地址: https://gitcode.com/gh_mirrors/api11/api 想要为Vikunja这个优秀的开源任务管理应用贡献自己的力量吗?这份终极指南将带你…...
Qwen3-ASR-1.7B在远程医疗场景:问诊语音实时转写+病历结构化输出
Qwen3-ASR-1.7B在远程医疗场景:问诊语音实时转写病历结构化输出 1. 远程医疗的语音识别挑战 远程医疗正在改变传统的就医方式,但语音沟通的准确性一直是关键挑战。医生在视频问诊中需要同时倾听患者描述、记录病情信息、并保持专业沟通,这对…...
