Android 11 触摸唤醒的实现源码
时间: 2024-05-16 21:01:52 浏览: 17
Android 11 中的触摸唤醒功能是通过 "Ambient Display" 实现的。当设备处于待机状态时,用户触摸屏幕时,Ambient Display 会将设备的屏幕亮起来,显示一些基本的信息,例如时间、日期、未读消息等。
具体实现源码如下:
1. 在 Android 11 中,Ambient Display 的代码位于 frameworks/base/packages/SystemUI/src/com/android/systemui/doze 中。其中,DozeService 和 DozeScreenState 实现了 Ambient Display 的核心逻辑。
2. DozeService 是一个 Service,它会在设备进入待机模式时启动。在启动时,它会注册一些监听器,以便在设备唤醒时触发相应的操作。
3. DozeScreenState 是一个接口,它定义了 Ambient Display 的状态和行为。具体实现位于 frameworks/base/packages/SystemUI/src/com/android/systemui/doze/state 中。其中,DozeScreenStateMachine 实现了 DozeScreenState 的状态机。
4. DozeScreenStateMachine 定义了 Ambient Display 的状态转换和事件处理逻辑。例如,当用户触摸屏幕时,它会触发 SCREEN_WAKE_UP事件,然后根据当前状态和事件类型执行相应的操作。
5. 在 frameworks/base/packages/SystemUI/src/com/android/systemui/doze/DozeHardwareComposer.java 中,定义了如何显示 Ambient Display 的内容。具体来说,它会创建一个 SurfaceView,并将其添加到 WindowManager 中,然后在 SurfaceView 上绘制需要显示的内容。
总体来说,Android 11 的触摸唤醒功能是通过 Ambient Display 实现的。Ambient Display 的核心逻辑位于 DozeService 和 DozeScreenState 中,具体的状态转换和事件处理逻辑则由 DozeScreenStateMachine 完成。同时,DozeHardwareComposer 定义了如何显示 Ambient Display 的内容。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)