Loading packages/SystemUI/res/values/config.xml +12 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,18 @@ <item>28</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 overlayed in AOD1. Valid range is from 0 (transparent) to 255 (opaque). -1 means keeping the current opacity. --> <integer-array name="config_doze_brightness_sensor_to_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> Loading packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +4 −3 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class DozeFactory { handler, wakeLock, machine), createDozeUi(context, host, wakeLock, machine, handler, alarmManager), createDozeScreenState(wrappedService), createDozeScreenBrightness(context, wrappedService, sensorManager, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), }); return machine; Loading @@ -76,10 +76,11 @@ public class DozeFactory { } private DozeMachine.Part createDozeScreenBrightness(Context context, DozeMachine.Service service, SensorManager sensorManager, Handler handler) { DozeMachine.Service service, SensorManager sensorManager, DozeHost host, Handler handler) { Sensor sensor = DozeSensors.findSensorWithType(sensorManager, context.getString(R.string.doze_brightness_sensor_type)); return new DozeScreenBrightness(context, service, sensorManager, sensor, handler); return new DozeScreenBrightness(context, service, sensorManager, sensor, host, handler); } private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, Loading packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public interface DozeHost { void onDoubleTap(float x, float y); default void setAodDimmingScrim(float scrimOpacity) {} void setDozeScreenBrightness(int value); void onIgnoreTouchWhilePulsing(boolean ignore); Loading packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +21 −2 Original line number Diff line number Diff line Loading @@ -32,22 +32,28 @@ import com.android.systemui.R; public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListener { private final Context mContext; private final DozeMachine.Service mDozeService; private final DozeHost mDozeHost; private final Handler mHandler; private final SensorManager mSensorManager; private final Sensor mLightSensor; private final int[] mSensorToBrightness; private final int[] mSensorToScrimOpacity; private boolean mRegistered; public DozeScreenBrightness(Context context, DozeMachine.Service service, SensorManager sensorManager, Sensor lightSensor, Handler handler) { SensorManager sensorManager, Sensor lightSensor, DozeHost host, Handler handler) { mContext = context; mDozeService = service; mSensorManager = sensorManager; mLightSensor = lightSensor; mDozeHost = host; mHandler = handler; mSensorToBrightness = context.getResources().getIntArray( R.array.config_doze_brightness_sensor_to_brightness); mSensorToScrimOpacity = context.getResources().getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity); } @Override Loading @@ -74,11 +80,24 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen @Override public void onSensorChanged(SensorEvent event) { if (mRegistered) { int brightness = computeBrightness((int) event.values[0]); int sensorValue = (int) event.values[0]; int brightness = computeBrightness(sensorValue); if (brightness > 0) { mDozeService.setDozeScreenBrightness(brightness); } int scrimOpacity = computeScrimOpacity(sensorValue); if (scrimOpacity >= 0) { mDozeHost.setAodDimmingScrim(scrimOpacity / 255f); } } } private int computeScrimOpacity(int sensorValue) { if (sensorValue < 0 || sensorValue >= mSensorToScrimOpacity.length) { return -1; } return mSensorToScrimOpacity[sensorValue]; } private int computeBrightness(int sensorValue) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +20 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ public class DozeScrimController { private boolean mWakeAndUnlocking; private boolean mFullyPulsing; private float mAodFrontScrimOpacity = 0; public DozeScrimController(ScrimController scrimController, Context context) { mContext = context; mScrimController = scrimController; Loading @@ -70,7 +72,8 @@ public class DozeScrimController { mDozingAborted = false; abortAnimations(); mScrimController.setDozeBehindAlpha(1f); mScrimController.setDozeInFrontAlpha(mDozeParameters.getAlwaysOn() ? 0f : 1f); mScrimController.setDozeInFrontAlpha( mDozeParameters.getAlwaysOn() ? mAodFrontScrimOpacity : 1f); } else { cancelPulsing(); if (animate) { Loading @@ -88,6 +91,19 @@ public class DozeScrimController { } } /** * Set the opacity of the front scrim when showing AOD1 * * Used to emulate lower brightness values than the hardware supports natively. */ public void setAodDimmingScrim(float scrimOpacity) { mAodFrontScrimOpacity = scrimOpacity; if (mDozing && !isPulsing() && !mDozingAborted && !mWakeAndUnlocking && mDozeParameters.getAlwaysOn()) { mScrimController.setDozeInFrontAlpha(mAodFrontScrimOpacity); } } public void setWakeAndUnlocking() { // Immediately abort the doze scrims in case of wake-and-unlock // for pulsing so the Keyguard fade-out animation scrim can take over. Loading Loading @@ -126,7 +142,8 @@ public class DozeScrimController { if (mDozing && !mWakeAndUnlocking) { mScrimController.setDozeBehindAlpha(1f); mScrimController.setDozeInFrontAlpha( mDozeParameters.getAlwaysOn() && !mDozingAborted ? 0f : 1f); mDozeParameters.getAlwaysOn() && !mDozingAborted ? mAodFrontScrimOpacity : 1f); } } Loading Loading @@ -337,7 +354,7 @@ public class DozeScrimController { // Signal that the pulse is all finished so we can turn the screen off now. pulseFinished(); if (mDozeParameters.getAlwaysOn()) { mScrimController.setDozeInFrontAlpha(0); mScrimController.setDozeInFrontAlpha(mAodFrontScrimOpacity); } } }; Loading Loading
packages/SystemUI/res/values/config.xml +12 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,18 @@ <item>28</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 overlayed in AOD1. Valid range is from 0 (transparent) to 255 (opaque). -1 means keeping the current opacity. --> <integer-array name="config_doze_brightness_sensor_to_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> Loading
packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +4 −3 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class DozeFactory { handler, wakeLock, machine), createDozeUi(context, host, wakeLock, machine, handler, alarmManager), createDozeScreenState(wrappedService), createDozeScreenBrightness(context, wrappedService, sensorManager, handler), createDozeScreenBrightness(context, wrappedService, sensorManager, host, handler), }); return machine; Loading @@ -76,10 +76,11 @@ public class DozeFactory { } private DozeMachine.Part createDozeScreenBrightness(Context context, DozeMachine.Service service, SensorManager sensorManager, Handler handler) { DozeMachine.Service service, SensorManager sensorManager, DozeHost host, Handler handler) { Sensor sensor = DozeSensors.findSensorWithType(sensorManager, context.getString(R.string.doze_brightness_sensor_type)); return new DozeScreenBrightness(context, service, sensorManager, sensor, handler); return new DozeScreenBrightness(context, service, sensorManager, sensor, host, handler); } private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, Loading
packages/SystemUI/src/com/android/systemui/doze/DozeHost.java +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public interface DozeHost { void onDoubleTap(float x, float y); default void setAodDimmingScrim(float scrimOpacity) {} void setDozeScreenBrightness(int value); void onIgnoreTouchWhilePulsing(boolean ignore); Loading
packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +21 −2 Original line number Diff line number Diff line Loading @@ -32,22 +32,28 @@ import com.android.systemui.R; public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListener { private final Context mContext; private final DozeMachine.Service mDozeService; private final DozeHost mDozeHost; private final Handler mHandler; private final SensorManager mSensorManager; private final Sensor mLightSensor; private final int[] mSensorToBrightness; private final int[] mSensorToScrimOpacity; private boolean mRegistered; public DozeScreenBrightness(Context context, DozeMachine.Service service, SensorManager sensorManager, Sensor lightSensor, Handler handler) { SensorManager sensorManager, Sensor lightSensor, DozeHost host, Handler handler) { mContext = context; mDozeService = service; mSensorManager = sensorManager; mLightSensor = lightSensor; mDozeHost = host; mHandler = handler; mSensorToBrightness = context.getResources().getIntArray( R.array.config_doze_brightness_sensor_to_brightness); mSensorToScrimOpacity = context.getResources().getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity); } @Override Loading @@ -74,11 +80,24 @@ public class DozeScreenBrightness implements DozeMachine.Part, SensorEventListen @Override public void onSensorChanged(SensorEvent event) { if (mRegistered) { int brightness = computeBrightness((int) event.values[0]); int sensorValue = (int) event.values[0]; int brightness = computeBrightness(sensorValue); if (brightness > 0) { mDozeService.setDozeScreenBrightness(brightness); } int scrimOpacity = computeScrimOpacity(sensorValue); if (scrimOpacity >= 0) { mDozeHost.setAodDimmingScrim(scrimOpacity / 255f); } } } private int computeScrimOpacity(int sensorValue) { if (sensorValue < 0 || sensorValue >= mSensorToScrimOpacity.length) { return -1; } return mSensorToScrimOpacity[sensorValue]; } private int computeBrightness(int sensorValue) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +20 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ public class DozeScrimController { private boolean mWakeAndUnlocking; private boolean mFullyPulsing; private float mAodFrontScrimOpacity = 0; public DozeScrimController(ScrimController scrimController, Context context) { mContext = context; mScrimController = scrimController; Loading @@ -70,7 +72,8 @@ public class DozeScrimController { mDozingAborted = false; abortAnimations(); mScrimController.setDozeBehindAlpha(1f); mScrimController.setDozeInFrontAlpha(mDozeParameters.getAlwaysOn() ? 0f : 1f); mScrimController.setDozeInFrontAlpha( mDozeParameters.getAlwaysOn() ? mAodFrontScrimOpacity : 1f); } else { cancelPulsing(); if (animate) { Loading @@ -88,6 +91,19 @@ public class DozeScrimController { } } /** * Set the opacity of the front scrim when showing AOD1 * * Used to emulate lower brightness values than the hardware supports natively. */ public void setAodDimmingScrim(float scrimOpacity) { mAodFrontScrimOpacity = scrimOpacity; if (mDozing && !isPulsing() && !mDozingAborted && !mWakeAndUnlocking && mDozeParameters.getAlwaysOn()) { mScrimController.setDozeInFrontAlpha(mAodFrontScrimOpacity); } } public void setWakeAndUnlocking() { // Immediately abort the doze scrims in case of wake-and-unlock // for pulsing so the Keyguard fade-out animation scrim can take over. Loading Loading @@ -126,7 +142,8 @@ public class DozeScrimController { if (mDozing && !mWakeAndUnlocking) { mScrimController.setDozeBehindAlpha(1f); mScrimController.setDozeInFrontAlpha( mDozeParameters.getAlwaysOn() && !mDozingAborted ? 0f : 1f); mDozeParameters.getAlwaysOn() && !mDozingAborted ? mAodFrontScrimOpacity : 1f); } } Loading Loading @@ -337,7 +354,7 @@ public class DozeScrimController { // Signal that the pulse is all finished so we can turn the screen off now. pulseFinished(); if (mDozeParameters.getAlwaysOn()) { mScrimController.setDozeInFrontAlpha(0); mScrimController.setDozeInFrontAlpha(mAodFrontScrimOpacity); } } }; Loading