2

众所周知,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 值吗?

4

0 回答 0