android 电源管理 查看屏幕耗电,Android4.4电源管理——屏幕亮度设置

private void initialize() {

mPowerState = new DisplayPowerState(

new ElectronBeam(mDisplayManager), mDisplayBlanker,

mLights.getLight(LightsService.LIGHT_ID_BACKLIGHT));

}

private void setScreenOn(boolean on) {         if (!mPowerState.isScreenOn() == on) {

mPowerState.setScreenOn(on);

if (on) {

mNotifier.onScreenOn();

} else {

mNotifier.onScreenOff();

}

}

/**

* Sets whether the screen is on or off.

*/

public void setScreenOn(boolean on) {

if (mScreenOn != on) {

if (DEBUG) {

Slog.d(TAG, "setScreenOn: on=" + on);

}

mScreenOn = on;

mScreenReady = false;

scheduleScreenUpdate();

}

}

private void scheduleScreenUpdate() {

if (!mScreenUpdatePending) {

mScreenUpdatePending = true;

postScreenUpdateThreadSafe();

}

}

private void postScreenUpdateThreadSafe() {

mHandler.removeCallbacks(mScreenUpdateRunnable);

mHandler.post(mScreenUpdateRunnable);

}

private final Runnable mScreenUpdateRunnable = new Runnable() {

@Override

public void run() {

mScreenUpdatePending = false;

int brightness = mScreenOn && mElectronBeamLevel > 0f ? mScreenBrightness : 0;

if (mPhotonicModulator.setState(mScreenOn, brightness)) {

mScreenReady = true;

invokeCleanListenerIfNeeded();

}

}

};

public boolean setState(boolean on, int backlight) {

synchronized (mLock) {

if (on != mPendingOn || backlight != mPendingBacklight) {

if (DEBUG) {

Slog.d(TAG, "Requesting new screen state: on=" + on

+ ", backlight=" + backlight);

}

if (YulongFeature.FEATURE_YULONG) {

Slog.d(TAG, "Requesting new screen state: on=" + on

+ ", backlight=" + backlight + ", mChangeInProgress=" + mChangeInProgress);

}

mPendingOn = on;

mPendingBacklight = backlight;

if (!mChangeInProgress) {

mChangeInProgress = true;

Slog.i(TAG, "setState : AsyncTask.THREAD_POOL_EXECUTOR.execute(mTask)");

AsyncTask.THREAD_POOL_EXECUTOR.execute(mTask);

}

}

return mChangeInProgress;

}

}

private final Runnable mTask = new Runnable() {

@Override

public void run() {

// Apply pending changes untildone.

for (;;) {

final boolean on;

final boolean onChanged;

final int backlight;

final booleanbacklightChanged;

synchronized (mLock) {

on = mPendingOn;

onChanged = (on !=mActualOn);

backlight = mPendingBacklight;

backlightChanged =(backlight != mActualBacklight);

if (!onChanged&& !backlightChanged) {

mChangeInProgress =false;

break;

}

mActualOn = on;

mActualBacklight =backlight;

}

if (onChanged &&on) {

mDisplayBlanker.unblankAllDisplays();

}

if (backlightChanged) {

mBacklight.setBrightness(backlight);

}

if (onChanged &&!on) {

mDisplayBlanker.blankAllDisplays();

}

}

// Let the outer class knowthat all changes have been applied.

postScreenUpdateThreadSafe();

}

};

public void setBrightness(int brightness) {

setBrightness(brightness, BRIGHTNESS_MODE_USER);

}

public void setBrightness(int brightness, int brightnessMode) {

synchronized (this) {

int color = brightness & 0x000000ff;

color = 0xff000000 | (color << 16) | (color << 8) | color;

setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值