diff --git a/api/lineage_current.txt b/api/lineage_current.txt
index 82b01c3b..74258927 100644
--- a/api/lineage_current.txt
+++ b/api/lineage_current.txt
@@ -790,6 +790,8 @@ package lineageos.providers {
field public static final java.lang.String APP_SWITCH_WAKE_SCREEN = "app_switch_wake_screen";
field public static final java.lang.String ASSIST_WAKE_SCREEN = "assist_wake_screen";
field public static final java.lang.String BACK_WAKE_SCREEN = "back_wake_screen";
+ field public static final java.lang.String BATTERY_LIGHT_BRIGHTNESS_LEVEL = "battery_light_brightness_level";
+ field public static final java.lang.String BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN = "battery_light_brightness_level_zen";
field public static final java.lang.String BATTERY_LIGHT_ENABLED = "battery_light_enabled";
field public static final java.lang.String BATTERY_LIGHT_FULL_COLOR = "battery_light_full_color";
field public static final java.lang.String BATTERY_LIGHT_LOW_COLOR = "battery_light_low_color";
@@ -839,6 +841,7 @@ package lineageos.providers {
field public static final java.lang.String NAVIGATION_BAR_MENU_ARROW_KEYS = "navigation_bar_menu_arrow_keys";
field public static final java.lang.String NAV_BUTTONS = "nav_buttons";
field public static final java.lang.String NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL = "notification_light_brightness_level";
+ field public static final java.lang.String NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN = "notification_light_brightness_level_zen";
field public static final java.lang.String NOTIFICATION_LIGHT_PULSE_CALL_COLOR = "notification_light_pulse_call_color";
field public static final java.lang.String NOTIFICATION_LIGHT_PULSE_CALL_LED_OFF = "notification_light_pulse_call_led_off";
field public static final java.lang.String NOTIFICATION_LIGHT_PULSE_CALL_LED_ON = "notification_light_pulse_call_led_on";
diff --git a/packages/LineageSettingsProvider/res/values/defaults.xml b/packages/LineageSettingsProvider/res/values/defaults.xml
index daf6b3f5..0a828f19 100644
--- a/packages/LineageSettingsProvider/res/values/defaults.xml
+++ b/packages/LineageSettingsProvider/res/values/defaults.xml
@@ -78,10 +78,22 @@
content://settings/system/notification_sound
+
+ 255
+
+
+ 255
+
255
+
+ 255
+
false
diff --git a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
index b4c4fb62..1d75b217 100644
--- a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
+++ b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
@@ -395,9 +395,18 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{
loadIntegerSetting(stmt, LineageSettings.System.STATUS_BAR_QUICK_QS_PULLDOWN,
R.integer.def_qs_quick_pulldown);
+ loadIntegerSetting(stmt, LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL,
+ R.integer.def_battery_brightness_level);
+
+ loadIntegerSetting(stmt, LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ R.integer.def_battery_brightness_level_zen);
+
loadIntegerSetting(stmt, LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
R.integer.def_notification_brightness_level);
+ loadIntegerSetting(stmt, LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ R.integer.def_notification_brightness_level_zen);
+
loadBooleanSetting(stmt, LineageSettings.System.SYSTEM_PROFILES_ENABLED,
R.bool.def_profiles_enabled);
diff --git a/sdk/src/java/lineageos/providers/LineageSettings.java b/sdk/src/java/lineageos/providers/LineageSettings.java
index 7bfc38c1..315e37ce 100644
--- a/sdk/src/java/lineageos/providers/LineageSettings.java
+++ b/sdk/src/java/lineageos/providers/LineageSettings.java
@@ -1657,6 +1657,25 @@ public final class LineageSettings {
public static final Validator CALL_RECORDING_FORMAT_VALIDATOR =
new InclusiveIntegerRangeValidator(0, 1);
+ /**
+ * Contains the battery light maximum brightness to use.
+ * Values range from 1 to 255
+ */
+ public static final String BATTERY_LIGHT_BRIGHTNESS_LEVEL =
+ "battery_light_brightness_level";
+
+ /**
+ * Contains the battery light maximum brightness to use when Do Not
+ * Disturb is active.
+ * Values range from 1 to 255
+ */
+ public static final String BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN =
+ "battery_light_brightness_level_zen";
+
+ /** @hide */
+ public static final Validator BATTERY_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR =
+ new InclusiveIntegerRangeValidator(1, 255);
+
/**
* Contains the notifications light maximum brightness to use.
* Values range from 1 to 255
@@ -1664,6 +1683,14 @@ public final class LineageSettings {
public static final String NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL =
"notification_light_brightness_level";
+ /**
+ * Contains the notifications light maximum brightness to use when Do Not
+ * Disturb is active.
+ * Values range from 1 to 255
+ */
+ public static final String NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN =
+ "notification_light_brightness_level_zen";
+
/** @hide */
public static final Validator NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR =
new InclusiveIntegerRangeValidator(1, 255);
@@ -2160,8 +2187,14 @@ public final class LineageSettings {
USE_EDGE_SERVICE_FOR_GESTURES_VALIDATOR);
VALIDATORS.put(STATUS_BAR_NOTIF_COUNT, STATUS_BAR_NOTIF_COUNT_VALIDATOR);
VALIDATORS.put(CALL_RECORDING_FORMAT, CALL_RECORDING_FORMAT_VALIDATOR);
+ VALIDATORS.put(BATTERY_LIGHT_BRIGHTNESS_LEVEL,
+ BATTERY_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR);
+ VALIDATORS.put(BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ BATTERY_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR);
VALIDATORS.put(NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR);
+ VALIDATORS.put(NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_VALIDATOR);
VALIDATORS.put(NOTIFICATION_LIGHT_SCREEN_ON,
NOTIFICATION_LIGHT_SCREEN_ON_VALIDATOR);
VALIDATORS.put(NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR,
diff --git a/sdk/src/java/org/lineageos/internal/notification/LedValues.java b/sdk/src/java/org/lineageos/internal/notification/LedValues.java
index a0cd5394..df468a1f 100644
--- a/sdk/src/java/org/lineageos/internal/notification/LedValues.java
+++ b/sdk/src/java/org/lineageos/internal/notification/LedValues.java
@@ -95,6 +95,24 @@ public class LedValues {
mOffMs = offMs;
}
+ public void applyAlphaToBrightness() {
+ final int alpha = (mColor >> 24) & 0xFF;
+ if (alpha > 0 && alpha < 255) {
+ mBrightness = mBrightness * alpha / 255;
+ }
+ mColor |= 0xFF000000;
+ }
+
+ public void applyBrightnessToColor() {
+ if (mBrightness > 0 && mBrightness < 255) {
+ int red = ((mColor >> 16) & 0xFF) * mBrightness / 255;
+ int green = ((mColor >> 8) & 0xFF) * mBrightness / 255;
+ int blue = (mColor & 0xFF) * mBrightness / 255;
+ mColor = (red << 16) | (green << 8) | blue;
+ mBrightness = 255;
+ }
+ }
+
@Override
public String toString() {
return "enabled=" + mEnabled + " color=#" + String.format("%08X", mColor)
diff --git a/sdk/src/java/org/lineageos/internal/notification/LineageBatteryLights.java b/sdk/src/java/org/lineageos/internal/notification/LineageBatteryLights.java
index fc31d42e..0e226b74 100644
--- a/sdk/src/java/org/lineageos/internal/notification/LineageBatteryLights.java
+++ b/sdk/src/java/org/lineageos/internal/notification/LineageBatteryLights.java
@@ -16,13 +16,18 @@
package org.lineageos.internal.notification;
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.BatteryManager;
import android.os.Handler;
import android.os.UserHandle;
+import android.provider.Settings.Global;
import android.util.Slog;
import lineageos.providers.LineageSettings;
@@ -45,9 +50,14 @@ public final class LineageBatteryLights {
private int mBatteryLowARGB;
private int mBatteryMediumARGB;
private int mBatteryFullARGB;
+ private int mBatteryBrightness;
+ private int mBatteryBrightnessZen;
private final Context mContext;
+ private NotificationManager mNotificationManager;
+ private int mZenMode;
+
public interface LedUpdater {
public void update();
}
@@ -70,6 +80,19 @@ public final class LineageBatteryLights {
mUseSegmentedBatteryLed = LightsCapabilities.supports(
mContext, LightsCapabilities.LIGHTS_SEGMENTED_BATTERY_LED);
+ // Watch for zen mode changes
+ mNotificationManager = mContext.getSystemService(NotificationManager.class);
+ IntentFilter filter = new IntentFilter(
+ NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED);
+ context.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mZenMode = mNotificationManager.getZenMode();
+ mLedUpdater.update();
+ }
+ }, filter);
+ mZenMode = mNotificationManager.getZenMode();
+
SettingsObserver observer = new SettingsObserver(new Handler());
observer.observe();
}
@@ -93,8 +116,17 @@ public final class LineageBatteryLights {
return;
}
- ledValues.setBrightness(mUseSegmentedBatteryLed ?
- level : LedValues.LIGHT_BRIGHTNESS_MAXIMUM);
+ final int brightness;
+ if (mUseSegmentedBatteryLed) {
+ brightness = level;
+ } else if (!mMultiColorLed) {
+ brightness = LedValues.LIGHT_BRIGHTNESS_MAXIMUM;
+ } else if (mZenMode == Global.ZEN_MODE_OFF) {
+ brightness = mBatteryBrightness;
+ } else {
+ brightness = mBatteryBrightnessZen;
+ }
+ ledValues.setBrightness(brightness);
if (low) {
if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
@@ -123,6 +155,17 @@ public final class LineageBatteryLights {
if (ledValues.getColor() != 0) {
ledValues.setEnabled(true);
}
+ // Apply brightness level to color value.
+ if (mMultiColorLed) {
+ ledValues.applyAlphaToBrightness();
+ ledValues.applyBrightnessToColor();
+ // If LED is segmented, reset brightness field to battery level
+ // (applyBrightnessToColor() changes it to 255)
+ if (mUseSegmentedBatteryLed) {
+ ledValues.setBrightness(brightness);
+ }
+ }
+
if (DEBUG) {
Slog.i(TAG, "calcLights output: ledValues={ " + ledValues + " }");
}
@@ -146,8 +189,8 @@ public final class LineageBatteryLights {
LineageSettings.System.BATTERY_LIGHT_PULSE), false, this,
UserHandle.USER_ALL);
- // Light colors
if (mMultiColorLed) {
+ // Light colors
resolver.registerContentObserver(LineageSettings.System.getUriFor(
LineageSettings.System.BATTERY_LIGHT_LOW_COLOR), false, this,
UserHandle.USER_ALL);
@@ -157,6 +200,14 @@ public final class LineageBatteryLights {
resolver.registerContentObserver(LineageSettings.System.getUriFor(
LineageSettings.System.BATTERY_LIGHT_FULL_COLOR), false, this,
UserHandle.USER_ALL);
+ // Battery brightness level
+ resolver.registerContentObserver(LineageSettings.System.getUriFor(
+ LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL), false, this,
+ UserHandle.USER_ALL);
+ // Battery brightness level in Do Not Disturb mode
+ resolver.registerContentObserver(LineageSettings.System.getUriFor(
+ LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN), false, this,
+ UserHandle.USER_ALL);
}
update();
@@ -190,6 +241,17 @@ public final class LineageBatteryLights {
LineageSettings.System.BATTERY_LIGHT_FULL_COLOR, res.getInteger(
com.android.internal.R.integer.config_notificationsBatteryFullARGB));
+ if (mMultiColorLed) {
+ // Battery brightness level
+ mBatteryBrightness = LineageSettings.System.getInt(resolver,
+ LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL,
+ LedValues.LIGHT_BRIGHTNESS_MAXIMUM);
+ // Battery brightness level in Do Not Disturb mode
+ mBatteryBrightnessZen = LineageSettings.System.getInt(resolver,
+ LineageSettings.System.BATTERY_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ LedValues.LIGHT_BRIGHTNESS_MAXIMUM);
+ }
+
mLedUpdater.update();
}
}
diff --git a/sdk/src/java/org/lineageos/internal/notification/LineageNotification.java b/sdk/src/java/org/lineageos/internal/notification/LineageNotification.java
new file mode 100644
index 00000000..f71c6a7a
--- /dev/null
+++ b/sdk/src/java/org/lineageos/internal/notification/LineageNotification.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (C) 2017 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.internal.notification;
+
+public class LineageNotification {
+
+ ///////////////////////////////////////////////////
+ // Lineage-specific Notification bundle extras
+ ///////////////////////////////////////////////////
+
+ /**
+ * Used by light picker in Settings to force
+ * notification lights on when screen is on.
+ */
+ public static final String EXTRA_FORCE_SHOW_LIGHTS = "lineage.forceShowLights";
+
+ /**
+ * Used by light picker in Settings to force
+ * a specific light brightness.
+ */
+ public static final String EXTRA_FORCE_LIGHT_BRIGHTNESS = "lineage.forceLightBrightness";
+}
diff --git a/sdk/src/java/org/lineageos/internal/notification/LineageNotificationLights.java b/sdk/src/java/org/lineageos/internal/notification/LineageNotificationLights.java
index beb10d90..491e518e 100644
--- a/sdk/src/java/org/lineageos/internal/notification/LineageNotificationLights.java
+++ b/sdk/src/java/org/lineageos/internal/notification/LineageNotificationLights.java
@@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.UserHandle;
import android.provider.Settings;
+import android.provider.Settings.Global;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Slog;
@@ -41,6 +42,7 @@ import lineageos.util.ColorUtils;
import org.lineageos.internal.notification.LedValues;
import org.lineageos.internal.notification.LightsCapabilities;
+import org.lineageos.internal.notification.LineageNotification;
import java.util.Map;
@@ -49,13 +51,20 @@ public final class LineageNotificationLights {
private static final boolean DEBUG = false;
// Light capabilities
- private boolean mAdjustableNotificationLedBrightness;
+ // Whether the notification light is RGB adjustable.
private boolean mMultiColorNotificationLed;
+ // Whether the lights HAL supports changing brightness.
+ private boolean mHALAdjustableBrightness;
+ // Whether the light should be considered brightness adjustable
+ // (via HAL or via modifying RGB values).
+ private boolean mCanAdjustBrightness;
// Light config
private boolean mAutoGenerateNotificationColor;
private boolean mScreenOnEnabled;
+ private boolean mZenAllowLights;
private int mNotificationLedBrightnessLevel;
+ private int mNotificationLedBrightnessLevelZen;
private int mDefaultNotificationColor;
private int mDefaultNotificationLedOn;
private int mDefaultNotificationLedOff;
@@ -65,6 +74,8 @@ public final class LineageNotificationLights {
private final ArrayMap mGeneratedPackageLedColors =
new ArrayMap();
+ private int mZenMode;
+
// For checking lockscreen status
private KeyguardManager mKeyguardManager;
@@ -83,7 +94,7 @@ public final class LineageNotificationLights {
final Resources res = mContext.getResources();
- mAdjustableNotificationLedBrightness = LightsCapabilities.supports(
+ mHALAdjustableBrightness = LightsCapabilities.supports(
mContext, LightsCapabilities.LIGHTS_ADJUSTABLE_NOTIFICATION_LED_BRIGHTNESS);
mDefaultNotificationColor = res.getColor(
@@ -96,6 +107,10 @@ public final class LineageNotificationLights {
mMultiColorNotificationLed = LightsCapabilities.supports(
mContext, LightsCapabilities.LIGHTS_RGB_NOTIFICATION_LED);
+ // We support brightness adjustment if either the HAL supports it
+ // or the light is RGB adjustable.
+ mCanAdjustBrightness = mHALAdjustableBrightness || mMultiColorNotificationLed;
+
mNotificationPulseCustomLedValues = new ArrayMap();
mPackageNameMappings = new ArrayMap();
@@ -197,27 +212,69 @@ public final class LineageNotificationLights {
return mPackageNameMappings.get(pkg);
}
+ public boolean isForcedOn(Notification n) {
+ if (n.extras != null) {
+ return n.extras.getBoolean(LineageNotification.EXTRA_FORCE_SHOW_LIGHTS, false);
+ }
+ return false;
+ }
+
+ private int getForcedBrightness(Notification n) {
+ if (n.extras != null) {
+ return n.extras.getInt(LineageNotification.EXTRA_FORCE_LIGHT_BRIGHTNESS, 0);
+ }
+ return 0;
+ }
+
+ public void setZenMode(int zenMode) {
+ mZenMode = zenMode;
+ mLedUpdater.update();
+ }
+
// Called by NotificationManagerService updateLightsLocked().
// Takes the lights values as requested by a notification and
// updates them according to the active Lineage feature settings.
- public void calcLights(LedValues ledValues, String packageName, boolean forcedOn,
- boolean screenOn, boolean inCall, boolean isDefaultLights, int suppressedEffects) {
- if (DEBUG) {
- Slog.i(TAG, "calcLights input: ledValues={ " + ledValues + " } packageName="
- + packageName + " forcedOn=" + forcedOn + " screenOn=" + screenOn
- + " inCall=" + inCall + " isDefaultLights=" + isDefaultLights
- + " suppressedEffects=" + suppressedEffects);
- }
-
+ public void calcLights(LedValues ledValues, String packageName, Notification n,
+ boolean screenActive, int suppressedEffects) {
+ final boolean forcedOn = isForcedOn(n);
+ final int forcedBrightness = getForcedBrightness(n);
+ final boolean isDefaultLights = (n.defaults & Notification.DEFAULT_LIGHTS) != 0;
final boolean suppressScreenOff =
(suppressedEffects & SUPPRESSED_EFFECT_SCREEN_OFF) != 0;
final boolean suppressScreenOn =
(suppressedEffects & SUPPRESSED_EFFECT_SCREEN_ON) != 0;
- final boolean screenActive = screenOn || inCall;
+
+ if (DEBUG) {
+ Slog.i(TAG, "calcLights input: "
+ + " ledValues={ " + ledValues + " }"
+ + " packageName=" + packageName
+ + " notification=" + n
+ + " screenActive=" + screenActive
+ + " suppressedEffects=" + suppressedEffects
+ + " forcedOn=" + forcedOn
+ + " forcedBrightness=" + forcedBrightness
+ + " isDefaultLights=" + isDefaultLights
+ + " suppressScreenOff=" + suppressScreenOff
+ + " suppressScreenOn=" + suppressScreenOn
+ + " mCanAdjustBrightness=" + mCanAdjustBrightness
+ + " mHALAdjustableBrightness=" + mHALAdjustableBrightness
+ + " mAutoGenerateNotificationColor=" + mAutoGenerateNotificationColor
+ + " mMultiColorNotificationLed=" + mMultiColorNotificationLed
+ + " mNotificationLedBrightnessLevel=" + mNotificationLedBrightnessLevel
+ + " mNotificationLedBrightnessLevelZen=" + mNotificationLedBrightnessLevelZen
+ + " mScreenOnEnabled= " + mScreenOnEnabled
+ + " mZenAllowLights=" + mZenAllowLights
+ + " mZenMode=" + mZenMode
+ );
+ }
+
final boolean enableLed;
if (forcedOn) {
// Forced on always enables
enableLed = true;
+ } else if (!mZenAllowLights && mZenMode != Global.ZEN_MODE_OFF) {
+ // DnD configured to disable lights in all modes (except when off).
+ enableLed = false;
} else if (screenActive && (!mScreenOnEnabled || suppressScreenOn)) {
// Screen on cases where we disable
enableLed = false;
@@ -233,8 +290,18 @@ public final class LineageNotificationLights {
return;
}
- ledValues.setBrightness(mAdjustableNotificationLedBrightness ?
- mNotificationLedBrightnessLevel : LedValues.LIGHT_BRIGHTNESS_MAXIMUM);
+ final int brightness;
+ if (!mCanAdjustBrightness) {
+ // No brightness support available
+ brightness = LedValues.LIGHT_BRIGHTNESS_MAXIMUM;
+ } else if (forcedBrightness > 0) {
+ brightness = forcedBrightness;
+ } else if (mZenMode == Global.ZEN_MODE_OFF) {
+ brightness = mNotificationLedBrightnessLevel;
+ } else {
+ brightness = mNotificationLedBrightnessLevelZen;
+ }
+ ledValues.setBrightness(brightness);
final LedValues ledValuesPkg = getLedValuesForPackageName(packageName);
@@ -251,6 +318,12 @@ public final class LineageNotificationLights {
ledValues.setOnMs(mDefaultNotificationLedOn);
ledValues.setOffMs(mDefaultNotificationLedOff);
}
+ // If lights HAL does not support adjustable notification brightness then
+ // scale color value here instead.
+ if (mCanAdjustBrightness && !mHALAdjustableBrightness) {
+ ledValues.applyAlphaToBrightness();
+ ledValues.applyBrightnessToColor();
+ }
if (DEBUG) {
Slog.i(TAG, "calcLights output: ledValues={ " + ledValues + " }");
}
@@ -285,12 +358,20 @@ public final class LineageNotificationLights {
resolver.registerContentObserver(LineageSettings.System.getUriFor(
LineageSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO), false,
this, UserHandle.USER_ALL);
- if (mAdjustableNotificationLedBrightness) {
+
+ if (mCanAdjustBrightness) {
resolver.registerContentObserver(LineageSettings.System.getUriFor(
LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL),
false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(LineageSettings.System.getUriFor(
+ LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN),
+ false, this, UserHandle.USER_ALL);
}
+ resolver.registerContentObserver(LineageSettings.System.getUriFor(
+ LineageSettings.System.ZEN_ALLOW_LIGHTS), false, this,
+ UserHandle.USER_ALL);
+
update();
}
@@ -336,18 +417,27 @@ public final class LineageNotificationLights {
UserHandle.USER_CURRENT));
}
- // Notification LED brightness
- if (mAdjustableNotificationLedBrightness) {
- mNotificationLedBrightnessLevel = LineageSettings.System.getIntForUser(resolver,
- LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
- LedValues.LIGHT_BRIGHTNESS_MAXIMUM, UserHandle.USER_CURRENT);
- }
-
// Notification lights with screen on
mScreenOnEnabled = (LineageSettings.System.getIntForUser(resolver,
LineageSettings.System.NOTIFICATION_LIGHT_SCREEN_ON, 0,
UserHandle.USER_CURRENT) != 0);
+ // Adustable notification LED brightness.
+ if (mCanAdjustBrightness) {
+ // Normal brightness.
+ mNotificationLedBrightnessLevel = LineageSettings.System.getIntForUser(resolver,
+ LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL,
+ LedValues.LIGHT_BRIGHTNESS_MAXIMUM, UserHandle.USER_CURRENT);
+ // Brightness in Do Not Disturb mode.
+ mNotificationLedBrightnessLevelZen = LineageSettings.System.getIntForUser(
+ resolver, LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL_ZEN,
+ LedValues.LIGHT_BRIGHTNESS_MAXIMUM, UserHandle.USER_CURRENT);
+ }
+
+ mZenAllowLights = LineageSettings.System.getIntForUser(resolver,
+ LineageSettings.System.ZEN_ALLOW_LIGHTS,
+ 1, UserHandle.USER_CURRENT) != 0;
+
mLedUpdater.update();
}
}