diff options
author | Sam Mortimer <sam@mortimer.me.uk> | 2013-03-18 18:24:07 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-10-26 02:34:25 -0700 |
commit | aa107df6c5559639daa26883b78edd8fe32cec87 (patch) | |
tree | d69fe1804d397a8e403a72cbdee53f32e743146f /packages/SystemUI/src/com | |
parent | 2a2cc073b2b8918b5bd18c535f53de73d578db81 (diff) | |
download | frameworks_base-aa107df6c5559639daa26883b78edd8fe32cec87.zip frameworks_base-aa107df6c5559639daa26883b78edd8fe32cec87.tar.gz frameworks_base-aa107df6c5559639daa26883b78edd8fe32cec87.tar.bz2 |
[1/2] Forward port power connect/disconnect notification support
Original commit info:
[1/2] Power connect/disconnect notification support
part 1/2: frameworks/base PowerUI and Settings
http://review.cyanogenmod.org/#/c/35241/
part 2/2: packages/apps/Settings Sound settings
http://review.cyanogenmod.org/#/c/35242/
V-Old_Change-Id: I36a6b9f924d2cd52191a8e83a744745b37c5b068
OldChange-Id: Ib865e1c296cb8e1d957b2a48616c88ceaba5c008
Change-Id: I5db20ef23bdb644e2af06e8dcbc8fbd0cf7ce321
Signed-off-by: STELIX <ssspinni@gmail.com>
Diffstat (limited to 'packages/SystemUI/src/com')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/power/PowerUI.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index 9459740..5913bb7 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -16,12 +16,15 @@ package com.android.systemui.power; +import android.app.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.database.ContentObserver; +import android.net.Uri; import android.os.BatteryManager; import android.os.Handler; import android.os.PowerManager; @@ -57,6 +60,9 @@ public class PowerUI extends SystemUI { private long mScreenOffTime = -1; + // For filtering ACTION_POWER_DISCONNECTED on boot + boolean mIgnoreFirstPowerEvent = true; + public void start() { mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mScreenOffTime = mPowerManager.isScreenOn() ? -1 : SystemClock.elapsedRealtime(); @@ -140,6 +146,8 @@ public class PowerUI extends SystemUI { filter.addAction(Intent.ACTION_USER_SWITCHED); filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING); filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED); + filter.addAction(Intent.ACTION_POWER_CONNECTED); + filter.addAction(Intent.ACTION_POWER_DISCONNECTED); mContext.registerReceiver(this, filter, null, mHandler); updateSaverMode(); } @@ -165,6 +173,10 @@ public class PowerUI extends SystemUI { final boolean plugged = mPlugType != 0; final boolean oldPlugged = oldPlugType != 0; + if (mIgnoreFirstPowerEvent && plugged) { + mIgnoreFirstPowerEvent = false; + } + int oldBucket = findBatteryLevelBucket(oldBatteryLevel); int bucket = findBatteryLevelBucket(mBatteryLevel); @@ -214,12 +226,52 @@ public class PowerUI extends SystemUI { updateSaverMode(); } else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGING.equals(action)) { setSaverMode(intent.getBooleanExtra(PowerManager.EXTRA_POWER_SAVE_MODE, false)); + } else if (Intent.ACTION_POWER_CONNECTED.equals(action) + || Intent.ACTION_POWER_DISCONNECTED.equals(action)) { + final ContentResolver cr = mContext.getContentResolver(); + + if (mIgnoreFirstPowerEvent) { + mIgnoreFirstPowerEvent = false; + } else { + if (Settings.Global.getInt(cr, + Settings.Global.POWER_NOTIFICATIONS_ENABLED, 0) == 1) { + playPowerNotificationSound(); + } + } } else { Slog.w(TAG, "unknown intent: " + intent); } } }; + void playPowerNotificationSound() { + final ContentResolver cr = mContext.getContentResolver(); + final String soundPath = + Settings.Global.getString(cr, Settings.Global.POWER_NOTIFICATIONS_RINGTONE); + + NotificationManager notificationManager = + (NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE); + if (notificationManager == null) { + return; + } + + Notification powerNotify=new Notification(); + powerNotify.defaults = Notification.DEFAULT_ALL; + if (soundPath != null) { + powerNotify.sound = Uri.parse(soundPath); + if (powerNotify.sound != null) { + // DEFAULT_SOUND overrides so flip off + powerNotify.defaults &= ~Notification.DEFAULT_SOUND; + } + } + if (Settings.Global.getInt(cr, + Settings.Global.POWER_NOTIFICATIONS_VIBRATE, 0) == 0) { + powerNotify.defaults &= ~Notification.DEFAULT_VIBRATE; + } + + notificationManager.notify(0, powerNotify); + } + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.print("mLowBatteryAlertCloseLevel="); pw.println(mLowBatteryAlertCloseLevel); |