diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index cc54ba34c43a1..9a8af3f50eaae 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -164,6 +164,15 @@
20
+
+ #ff00ff00
+
+
+ 500
+
+
+ 2000
+
false
diff --git a/services/java/com/android/server/LightsService.java b/services/java/com/android/server/LightsService.java
index 1937b043f530a..9cc74e814c451 100644
--- a/services/java/com/android/server/LightsService.java
+++ b/services/java/com/android/server/LightsService.java
@@ -80,11 +80,16 @@ public class LightsService {
}
}
+
public void pulse() {
+ pulse(0x00ffffff, 7);
+ }
+
+ public void pulse(int color, int onMS) {
synchronized (this) {
if (mColor == 0 && !mFlashing) {
- setLightLocked(0x00ffffff, LIGHT_FLASH_HARDWARE, 7, 0, BRIGHTNESS_MODE_USER);
- mH.sendMessageDelayed(Message.obtain(mH, 1, this), 3000);
+ setLightLocked(color, LIGHT_FLASH_HARDWARE, onMS, 1000, BRIGHTNESS_MODE_USER);
+ mH.sendMessageDelayed(Message.obtain(mH, 1, this), onMS);
}
}
}
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index 436a60e377f5f..fc89ec8482a86 100755
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -91,6 +91,10 @@ class NotificationManagerService extends INotificationManager.Stub
private LightsService.Light mNotificationLight;
private LightsService.Light mAttentionLight;
+ private int mDefaultNotificationColor;
+ private int mDefaultNotificationLedOn;
+ private int mDefaultNotificationLedOff;
+
private NotificationRecord mSoundNotification;
private AsyncPlayer mSound;
private boolean mSystemReady;
@@ -398,6 +402,14 @@ class NotificationManagerService extends INotificationManager.Stub
mNotificationLight = lights.getLight(LightsService.LIGHT_ID_NOTIFICATIONS);
mAttentionLight = lights.getLight(LightsService.LIGHT_ID_ATTENTION);
+ Resources resources = mContext.getResources();
+ mDefaultNotificationColor = resources.getColor(
+ com.android.internal.R.color.config_defaultNotificationColor);
+ mDefaultNotificationLedOn = resources.getInteger(
+ com.android.internal.R.integer.config_defaultNotificationLedOn);
+ mDefaultNotificationLedOff = resources.getInteger(
+ com.android.internal.R.integer.config_defaultNotificationLedOff);
+
// Don't start allowing notifications until the setup wizard has run once.
// After that, including subsequent boots, init with notifications turned on.
// This works on the first boot because the setup wizard will toggle this
@@ -1024,14 +1036,25 @@ class NotificationManagerService extends INotificationManager.Stub
}
// we only flash if screen is off and persistent pulsing is enabled
- if (mLedNotification == null || mScreenOn || !mNotificationPulseEnabled) {
+ if (mLedNotification == null || mScreenOn) {
mNotificationLight.turnOff();
} else {
- mNotificationLight.setFlashing(
- mLedNotification.notification.ledARGB,
- LightsService.LIGHT_FLASH_TIMED,
- mLedNotification.notification.ledOnMS,
- mLedNotification.notification.ledOffMS);
+ int ledARGB = mLedNotification.notification.ledARGB;
+ int ledOnMS = mLedNotification.notification.ledOnMS;
+ int ledOffMS = mLedNotification.notification.ledOffMS;
+ if ((mLedNotification.notification.defaults & Notification.DEFAULT_LIGHTS) != 0) {
+ ledARGB = mDefaultNotificationColor;
+ ledOnMS = mDefaultNotificationLedOn;
+ ledOffMS = mDefaultNotificationLedOff;
+ }
+ if (mNotificationPulseEnabled) {
+ // pulse repeatedly
+ mNotificationLight.setFlashing(ledARGB, LightsService.LIGHT_FLASH_TIMED,
+ ledOnMS, ledOffMS);
+ } else {
+ // pulse only once
+ mNotificationLight.pulse(ledARGB, ledOnMS);
+ }
}
}