Power Manager之DisplayPowerState.PhotonicModulator

Android4.4 DisplayPowerState.java PhotonicModulator

PhotonicModulator是DisplayPowerState的内部类,private final class,所以实例只有一个,

在DisplayPowerState的构造方法中:mPhotonicModulator = new PhotonicModulator();

它的作用:Updates the state of the screen and backlight asynchronously on a separate thread. 异步更新screen和backlight

下面是流程图:

如何设置screenOn和backlight是由三个值决定:

DisplayPowerState.java的boolean mScreenOn、float mElectronBeamLevel、int mScreenBrightness

要注意这里的Handler是异步的:mHandler = new Handler(true /*async*/);

一个标准的设置screen为off的log如下:

D/PowerManagerDisplayState(  693): Requesting new screen state: on=false, backlight=0, mChangeInProgress=false
D/PowerManagerDisplayState(  693): on mTask
D/PowerManagerDisplayState(  693): mTask: on = false, mActualOn = true, backlight = 0, mActualBacklight = 0
D/PowerManagerDisplayState(  693): mTask: on = false, onChanged = true, backlightChanged = false, backlight = 0
D/PowerManagerService(  693): blankAllDisplays in ...
D/PowerManagerService(  693): blankAllDisplays  ...
D/PowerManagerService(  693): blankAllDisplays out ...
D/PowerManagerDisplayState(  693): mTask: on = false, mActualOn = false, backlight = 0, mActualBacklight = 0
DisplayBlanker的唯一实现是在PowerManagerService.java中:

private final class DisplayBlankerImpl implements DisplayBlanker

mBacklight是DisplayPowerController中创建DisplayPowerState实例时传入的:

LightsService mLights;
mLights.getLight(LightsService.LIGHT_ID_BACKLIGHT)

LightsService.java
private final Light mLights[] = new Light[LIGHT_ID_COUNT];

public static final int LIGHT_ID_BACKLIGHT = 0;
public static final int LIGHT_ID_KEYBOARD = 1;
public static final int LIGHT_ID_BUTTONS = 2;
public static final int LIGHT_ID_BATTERY = 3;
public static final int LIGHT_ID_NOTIFICATIONS = 4;
public static final int LIGHT_ID_ATTENTION = 5;
public static final int LIGHT_ID_BLUETOOTH = 6;
public static final int LIGHT_ID_WIFI = 7;
public static final int LIGHT_ID_COUNT = 8;
这里有很多light,我们只得到了其中的backlight这个。

未完待续......


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值