Android 4.4中的距离/接近传感器 P-sensor(一)

Part I PMS处理p-sensor并灭屏幕


1.PowerManagerServicesystemReady函数中初始化mDisplayPowerController

             Android 4.4中的距离/接近传感器 P-sensor(一)_第1张图片


2.在DisplayPowerController的构造函数中获得P-sensor(mProximitySensor),并设置其检测阈值(可以调节灵敏度)。


               Android 4.4中的距离/接近传感器 P-sensor(一)_第2张图片

3.在PowerManagerService会定期调用updateDisplayPowerStateLocked函数,这个函数将当前是否使用P-sensor、屏幕亮度值等封装在一个DisplayPowerRequest中,传递给DisplayPowerController,通过DisplayPowerController的requestPowerState来进行处理。

                Android 4.4中的距离/接近传感器 P-sensor(一)_第3张图片


4. DisplayPowerRequest中的useProximitySensor表示是否使用P-senor控制屏幕灭屏亮屏,

它的值是从shouldUseProximitySensorLocked函数中获取的,这个函数返回是否有谁申请了p-senor属性(PROXIMITY_SCREEN_OFF_WAKE_LOCK)的WakeLock.

(比如来电界面)

               


5. DisplayPowerController中处理DisplayPowerRequesrequestPowerState函数会先判断下需要处理的request是否与刚刚处理完的pending request相同,若不同,再将request以消息的形式发送给DisplayControllerHandler,最终将会在updatePowerState函数中处理,流程如下图(其中,红色部分表示使用P-SENSOR时,首次判断到距离近并灭屏的过程;绿色部分表示在因为P-SENSOR而灭屏后,P-SENSOR返回距离仍为近时维持灭屏的流程;蓝色部分表示因为P-SENSOR而灭屏后,P-SENSOR返回距离为远时,屏幕恢复的流程):

Android 4.4中的距离/接近传感器 P-sensor(一)_第4张图片 Android 4.4中的距离/接近传感器 P-sensor(一)_第5张图片

你可能感兴趣的:(Android,Framework)