Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c79fb17 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use additional scrim for lowLight ambientWallpaper" into main

parents 16842cac cc213cc4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -333,6 +333,19 @@
        <item>0</item> <!-- 4: SUN -->
    </integer-array>

    <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor
           to an opacity value for a black scrim that is overlaid in AOD to darken the AOD
           wallpaper.
           Valid range is from 0 (transparent) to 255 (opaque).
           -1 means keeping the current opacity. -->
    <integer-array name="config_doze_brightness_sensor_to_wallpaper_scrim_opacity">
        <item>-1</item> <!-- 0: OFF -->
        <item>0</item> <!-- 1: NIGHT -->
        <item>0</item> <!-- 2: LOW -->
        <item>0</item> <!-- 3: HIGH -->
        <item>0</item> <!-- 4: SUN -->
    </integer-array>

    <!-- Doze: whether the double tap sensor reports 2D touch coordinates -->
    <bool name="doze_double_tap_reports_touch_coordinates">false</bool>

+12 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ public class AlwaysOnDisplayPolicy {

    static final String KEY_SCREEN_BRIGHTNESS_ARRAY = "screen_brightness_array";
    static final String KEY_DIMMING_SCRIM_ARRAY = "dimming_scrim_array";
    static final String KEY_WALLPAPER_DIMMING_SCRIM_ARRAY = "wallpaper_dimming_scrim_array";
    static final String KEY_PROX_SCREEN_OFF_DELAY_MS = "prox_screen_off_delay";
    static final String KEY_PROX_COOLDOWN_TRIGGER_MS = "prox_cooldown_trigger";
    static final String KEY_PROX_COOLDOWN_PERIOD_MS = "prox_cooldown_period";
@@ -94,6 +95,14 @@ public class AlwaysOnDisplayPolicy {
     */
    public int[] dimmingScrimArray;

    /**
     * Integer array to map ambient brightness type to dimming scrim for aod wallpaper.
     *
     * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS
     * @see #KEY_WALLPAPER_DIMMING_SCRIM_ARRAY
     */
    public int[] wallpaperDimmingScrimArray;

    /**
     * Delay time(ms) from covering the prox to turning off the screen.
     *
@@ -205,6 +214,9 @@ public class AlwaysOnDisplayPolicy {
                dimmingScrimArray = mParser.getIntArray(KEY_DIMMING_SCRIM_ARRAY,
                        resources.getIntArray(
                                R.array.config_doze_brightness_sensor_to_scrim_opacity));
                wallpaperDimmingScrimArray = mParser.getIntArray(KEY_WALLPAPER_DIMMING_SCRIM_ARRAY,
                        resources.getIntArray(
                                R.array.config_doze_brightness_sensor_to_wallpaper_scrim_opacity));
            }
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -467,7 +467,7 @@ public class DozeLog implements Dumpable {
    * @param scrimOpacity
     */
    public void traceSetAodDimmingScrim(float scrimOpacity) {
        mLogger.logSetAodDimmingScrim((long) scrimOpacity);
        mLogger.logSetAodDimmingScrim(scrimOpacity);
    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -342,12 +342,12 @@ class DozeLogger @Inject constructor(@DozeLog private val buffer: LogBuffer) {
        )
    }

    fun logSetAodDimmingScrim(scrimOpacity: Long) {
    fun logSetAodDimmingScrim(scrimOpacity: Float) {
        buffer.log(
            TAG,
            INFO,
            { long1 = scrimOpacity },
            { "Doze aod dimming scrim opacity set, opacity=$long1" },
            { double1 = scrimOpacity.toDouble() },
            { "Doze aod dimming scrim opacity set, opacity=$double1" },
        )
    }

+49 −4
Original line number Diff line number Diff line
@@ -17,8 +17,11 @@
package com.android.systemui.doze;

import static android.os.PowerManager.GO_TO_SLEEP_REASON_TIMEOUT;

import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP;

import static java.lang.Integer.max;

import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
@@ -39,6 +42,7 @@ import android.view.Display;

import com.android.app.tracing.TraceUtils;
import com.android.internal.R;
import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.dagger.BrightnessSensor;
import com.android.systemui.doze.dagger.DozeScope;
@@ -46,18 +50,24 @@ import com.android.systemui.doze.dagger.WrappedService;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.policy.DevicePostureController;
import com.android.systemui.util.kotlin.JavaAdapterKt;
import com.android.systemui.util.sensors.AsyncSensorManager;
import com.android.systemui.util.settings.SystemSettings;
import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor;

import kotlin.Unit;

import kotlinx.coroutines.CoroutineScope;
import kotlinx.coroutines.Job;

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.CancellationException;

import javax.inject.Inject;

import kotlin.Unit;

/**
 * Controls the screen brightness when dozing.
 */
@@ -88,9 +98,14 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
    private final DevicePostureController mDevicePostureController;
    private final DozeLog mDozeLog;
    private final SystemSettings mSystemSettings;
    private final WallpaperInteractor mWallpaperInteractor;
    private final CoroutineScope mScope;
    private Job mWallpaperSupportsAmbientModeJob = null;
    private boolean mWallpaperSupportsAmbientMode;
    private final int[] mSensorToBrightness;
    @Nullable
    private final float[] mSensorToBrightnessFloat;
    private final int[] mSensorToWallpaperScrimOpacity;
    private final int[] mSensorToScrimOpacity;
    private final int mScreenBrightnessDim;
    private final float mScreenBrightnessDimFloat;
@@ -127,7 +142,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
            DevicePostureController devicePostureController,
            DozeLog dozeLog,
            SystemSettings systemSettings,
            DisplayManager displayManager) {
            DisplayManager displayManager,
            WallpaperInteractor wallpaperInteractor,
            @Application CoroutineScope scope
    ) {
        mContext = context;
        mDozeService = service;
        mSensorManager = sensorManager;
@@ -141,6 +159,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        mHandler = handler;
        mDozeLog = dozeLog;
        mSystemSettings = systemSettings;
        mWallpaperInteractor = wallpaperInteractor;
        mScope = scope;

        mScreenBrightnessMinimumDimAmountFloat = context.getResources().getFloat(
                R.dimen.config_screenBrightnessMinimumDimAmountFloat);
@@ -154,6 +174,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        mSensorToBrightnessFloat =
                mDisplayManager.getDozeBrightnessSensorValueToBrightness(mContext.getDisplayId());
        mSensorToScrimOpacity = alwaysOnDisplayPolicy.dimmingScrimArray;
        mSensorToWallpaperScrimOpacity = alwaysOnDisplayPolicy.wallpaperDimmingScrimArray;

        mDevicePostureController.addCallback(mDevicePostureCallback);
    }
@@ -163,6 +184,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        mState = newState;
        switch (newState) {
            case INITIALIZED:
                startListeningForWallpaperSupportsAmbientMode();
                resetBrightnessToDefault();
                break;
            case DOZE_AOD:
@@ -190,6 +212,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
    }

    private void onDestroy() {
        stopListeningForWallpaperSupportsAmbientMode();
        setLightSensorEnabled(false);
        mDevicePostureController.removeCallback(mDevicePostureCallback);
    }
@@ -266,7 +289,11 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        if (sensorValue < 0 || sensorValue >= mSensorToScrimOpacity.length) {
            return -1;
        }
        return mSensorToScrimOpacity[sensorValue];
        int wallpaperScrimOpacity = -1;
        if (mWallpaperSupportsAmbientMode && sensorValue < mSensorToWallpaperScrimOpacity.length) {
            wallpaperScrimOpacity = mSensorToWallpaperScrimOpacity[sensorValue];
        }
        return max(wallpaperScrimOpacity, mSensorToScrimOpacity[sensorValue]);
    }

    private int computeBrightness(int sensorValue) {
@@ -435,6 +462,22 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        updateBrightnessAndReady(false /* force */);
    }

    private void startListeningForWallpaperSupportsAmbientMode() {
        if (mWallpaperSupportsAmbientModeJob != null) return;
        mWallpaperSupportsAmbientModeJob = JavaAdapterKt.collectFlow(
                mScope,
                mScope.getCoroutineContext(),
                mWallpaperInteractor.getWallpaperSupportsAmbientMode(),
                supportsAmbientMode -> mWallpaperSupportsAmbientMode = supportsAmbientMode
        );
    }

    private void stopListeningForWallpaperSupportsAmbientMode() {
        if (mWallpaperSupportsAmbientModeJob == null) return;
        mWallpaperSupportsAmbientModeJob.cancel(new CancellationException("Stop monitoring"));
        mWallpaperSupportsAmbientModeJob = null;
    }

    /** Dump current state */
    public void dump(PrintWriter pw) {
        pw.println("DozeScreenBrightness:");
@@ -445,6 +488,8 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        idpw.println("sensorToBrightness=" + Arrays.toString(mSensorToBrightness));
        idpw.println("sensorToBrightnessFloat=" + Arrays.toString(mSensorToBrightnessFloat));
        idpw.println("sensorToScrimOpacity=" + Arrays.toString(mSensorToScrimOpacity));
        idpw.println("sensorToWallpaperScrimOpacity="
                + Arrays.toString(mSensorToWallpaperScrimOpacity));
        idpw.println("screenBrightnessDim=" + mScreenBrightnessDim);
        idpw.println("screenBrightnessDimFloat=" + mScreenBrightnessDimFloat);
        idpw.println("mDefaultDozeBrightness=" + mDefaultDozeBrightness);
Loading