diff options
author | Joe Onorato <> | 2009-03-24 19:29:20 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-24 19:29:20 -0700 |
commit | c1e8446279381bdd728688d10285951ef8228ed1 (patch) | |
tree | 09c0ac46e69f0c3aa8929ba64a6d6a5f3976a237 /services | |
parent | 8faf457da6ab73b13c346a160c14302acbceadd7 (diff) | |
download | frameworks_base-c1e8446279381bdd728688d10285951ef8228ed1.zip frameworks_base-c1e8446279381bdd728688d10285951ef8228ed1.tar.gz frameworks_base-c1e8446279381bdd728688d10285951ef8228ed1.tar.bz2 |
Automated import from //branches/donutburger/...@141086,141086
Diffstat (limited to 'services')
-rwxr-xr-x | services/java/com/android/server/HardwareService.java | 47 | ||||
-rw-r--r-- | services/java/com/android/server/NotificationManagerService.java | 1 |
2 files changed, 46 insertions, 2 deletions
diff --git a/services/java/com/android/server/HardwareService.java b/services/java/com/android/server/HardwareService.java index 7466a37..42367ef 100755 --- a/services/java/com/android/server/HardwareService.java +++ b/services/java/com/android/server/HardwareService.java @@ -21,8 +21,10 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.os.Handler; import android.os.Hardware; import android.os.IHardwareService; +import android.os.Message; import android.os.Power; import android.os.PowerManager; import android.os.Process; @@ -45,6 +47,9 @@ public class HardwareService extends IHardwareService.Stub { static final int LIGHT_FLASH_NONE = 0; static final int LIGHT_FLASH_TIMED = 1; + private boolean mAttentionLightOn; + private boolean mPulsing; + HardwareService(Context context) { // Reset the hardware to a default state, in case this is a runtime // restart instead of a fresh boot. @@ -217,10 +222,48 @@ public class HardwareService extends IHardwareService.Stub { public void setAttentionLight(boolean on) { // Not worthy of a permission. We shouldn't have a flashlight permission. - setLight_native(mNativePointer, LIGHT_ID_ATTENTION, on ? 0xffffffff : 0, - LIGHT_FLASH_NONE, 0, 0); + synchronized (this) { + mAttentionLightOn = on; + mPulsing = false; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, on ? 0xffffffff : 0, + LIGHT_FLASH_NONE, 0, 0); + } } + public void pulseBreathingLight() { + synchronized (this) { + // HACK: Added at the last minute of cupcake -- design this better; + // Don't reuse the attention light -- make another one. + if (false) { + Log.d(TAG, "pulseBreathingLight mAttentionLightOn=" + mAttentionLightOn + + " mPulsing=" + mPulsing); + } + if (!mAttentionLightOn && !mPulsing) { + mPulsing = true; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, 0xff101010, + LIGHT_FLASH_NONE, 0, 0); + mH.sendMessageDelayed(Message.obtain(mH, 1), 3000); + } + } + } + + private Handler mH = new Handler() { + @Override + public void handleMessage(Message msg) { + synchronized (this) { + if (false) { + Log.d(TAG, "pulse cleanup handler firing mPulsing=" + mPulsing); + } + if (mPulsing) { + mPulsing = false; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, + mAttentionLightOn ? 0xffffffff : 0, + LIGHT_FLASH_NONE, 0, 0); + } + } + } + }; + private void doCancelVibrate() { synchronized (this) { if (mThread != null) { diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java index c4b0587..6ed8b4c 100644 --- a/services/java/com/android/server/NotificationManagerService.java +++ b/services/java/com/android/server/NotificationManagerService.java @@ -588,6 +588,7 @@ class NotificationManagerService extends INotificationManager.Stub long identity = Binder.clearCallingIdentity(); try { r.statusBarKey = mStatusBarService.addIcon(icon, n); + mHardware.pulseBreathingLight(); } finally { Binder.restoreCallingIdentity(identity); |