众所周知,android系统实现自动亮度的逻辑是这样的(By LightSensor):
frameworks/base/services/java/com/android/server/power/DisplayPowerController.java
public DisplayPowerController(Looper looper, Context context, Notifier notifier,
LightsService lights, TwilightService twilight,
DisplayBlanker displayBlanker,
Callbacks callbacks, Handler callbackHandler) {
if (mUseSoftwareAutoBrightnessConfig) {
int[] lux = resources.getIntArray(
com.android.internal.R.array.config_autoBrightnessLevels);
int[] screenBrightness = resources.getIntArray(
com.android.internal.R.array.config_autoBrightnessLcdBacklightValues);
}
}
private final SensorEventListener mLightSensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (mLightSensorEnabled) {
final long time = SystemClock.uptimeMillis();
final float lux = event.values[0];
handleLightSensorEvent(time, lux);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Not used.
}
};
框架/base/core/res/res/values/config.xml
<integer-array name="config_autoBrightnessLevels">
</integer-array>
<integer-array name="config_autoBrightnessLcdBacklightValues">
</integer-array>
我想在我自己的应用程序中自定义 config_autoBrightnessLevels(启动应用程序时,使 LCD 更亮),那么怎么做呢?我必须将实现逻辑复制到我的 APP 并更新 WindowManager.LayoutParams.screenBrightness 值吗?