Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑

2023-10-26 00:30

本文主要是介绍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 抬手亮屏功能的逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/285334

相关文章

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等