frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java

fbb96a90db5c36a7e792b8bac7fea2f1.png

DisplayManager.java

public void setTemporaryBrightness(int brightness) {

mGlobal.setTemporaryBrightness(brightness);

}

DisplayManagerGlobal.java

public void setTemporaryBrightness(int brightness) {

try {

mDm.setTemporaryBrightness(brightness);

} catch (RemoteException ex) {

throw ex.rethrowFromSystemServer();

}

}

DisplayManagerService.java

public void setTemporaryBrightness(int brightness) {

...

mDisplayPowerController.setTemporaryBrightness(brightness);

...

}

DisplayPowerController.java

public void setTemporaryBrightness(int brightness) {

Message msg = mHandler.obtainMessage(MSG_SET_TEMPORARY_BRIGHTNESS,

brightness, 0 /*unused*/);

msg.sendToTarget();

}

...

private void updatePowerState() {

//此方法比较长,里面有大量的判断,下面只写关键语句

...

animateScreenBrightness(brightness, 0);

...

}

...

private void animateScreenBrightness(int target, int rate) {

//这一句就是关键的设置语句

if (mScreenBrightnessRampAnimator.animateTo(target, rate)) {

}

}

下面的就不太好跟了,直接贴图 RampAnimator.java

0492da139a88f8bca030c66d07602c19.png

DisplayPowerState.java

d0f97c2ebb8ddfbe73607ff01d8c3d52.png

setScreenBrightness(int brightness){...}

scheduleScreenUpdate() {...}

postScreenUpdateThreadSafe(){...}

Runnable mScreenUpdateRunnable = new Runnable() {

...

mPhotonicModulator.setState(mScreenState, brightness)

...

}

PhotonicModulator.java

abadc705d536932f4fcd4aa125451801.png

c64e4e14a9e3b49cbbeb19cfeb6820fb.png

又调回到了DisplayManagerService.java

b2f686a9be5ef4e6c37076d3034234a4.png

dd3e952a02ad2d79f05032df1f029bdf.png

LocalDisplayAdapter.java

75f87ffe58fc5b706d5fa1653dfa4878.png

026e40aa55075fc3dc776ca16a659046.png

LightsService.java

3ae7467b38e547c194d65f2c34330421.png

36879463029d7d42c2ec4ee71e8676cb.png

com_android_server_lights_LightsService.cpp

3757fdc521d32d4315c8a931aa3c1197.png

更多推荐