From 84e2756c0f3794c6efe5568a9d09101ba689fb39 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Fri, 7 Dec 2012 13:56:34 -0800 Subject: [PATCH] Play a tone when wireless charging begins. Only plays a tone if the battery level is below 95% which is the same heuristic used when determining whether to turn the screen on. Use new low battery and wireless charging sounds on Mako. Bug: 7371658 Change-Id: Ia4527ec398d024ee418a4287e1fcbf0ec83bcc24 --- core/java/android/provider/Settings.java | 7 +++ core/res/res/values/symbols.xml | 1 - data/sounds/AudioPackage10.mk | 1 + data/sounds/effects/ogg/LowBattery.ogg | Bin 17786 -> 12401 bytes .../effects/ogg/WirelessChargingStarted.ogg | Bin 0 -> 12025 bytes .../SettingsProvider/res/values/defaults.xml | 2 + .../providers/settings/DatabaseHelper.java | 21 ++++++++- .../com/android/server/power/Notifier.java | 41 ++++++++++++++++++ .../server/power/PowerManagerService.java | 10 +++++ 9 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 data/sounds/effects/ogg/WirelessChargingStarted.ogg diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index dc089bdcdf584..4dbc4b4fa0fdb 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -4295,6 +4295,13 @@ public final class Settings { */ public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled"; + /** + * URI for the "wireless charging started" sound. + * @hide + */ + public static final String WIRELESS_CHARGING_STARTED_SOUND = + "wireless_charging_started_sound"; + /** * Whether we keep the device on while the device is plugged in. * Supported values are: diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 77b91afadd8d3..0f9d57ee2ae80 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1818,5 +1818,4 @@ - diff --git a/data/sounds/AudioPackage10.mk b/data/sounds/AudioPackage10.mk index cb55bba0651a1..b40e385529201 100755 --- a/data/sounds/AudioPackage10.mk +++ b/data/sounds/AudioPackage10.mk @@ -29,6 +29,7 @@ PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg \ $(LOCAL_PATH)/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.ogg \ $(LOCAL_PATH)/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.ogg \ + $(LOCAL_PATH)/effects/ogg/WirelessChargingStarted.ogg:system/media/audio/ui/WirelessChargingStarted.ogg \ $(LOCAL_PATH)/notifications/ogg/Adara.ogg:system/media/audio/notifications/Adara.ogg \ $(LOCAL_PATH)/notifications/ogg/Alya.ogg:system/media/audio/notifications/Alya.ogg \ $(LOCAL_PATH)/notifications/ogg/Arcturus.ogg:system/media/audio/notifications/Arcturus.ogg \ diff --git a/data/sounds/effects/ogg/LowBattery.ogg b/data/sounds/effects/ogg/LowBattery.ogg index 710e3856471c2f79645c743907234e103c1ae0b1..ab9eba356348165ca2ebccace0c0d2bb1c95d650 100644 GIT binary patch delta 11295 zcmaKRby!tF*Y7@bsdR&MNv9wnAl)1|bVzpzh~!4;R=T@OkOt|Nl8o2OVTv-yTA}492sG_1OVqt9OVvYlE)sWLrloC;Nbf=Oqc6Bv> z=K(?f4=_ztZ4D9#K!A4gfDyK$&vNK&NnuRgbURRSROX!#&QDpFxPty^efWYBpL-MJ z0+LW9-e@8LY5?HJ)z8&U{%%BVk4|btkcA?@S5T%ncT!Ehs(_eBp1w}Q_E#EQ++)fo zRS2iZ$2SeDf)4^v;WuXX*k=NW7(M`e#D-!p2ZC`XBh1^Mp+C5`$f03^g=y*|f=uag zKLi=lV{w`D(@f#ow73zu&9vBYIVJ$0YKOpY2_{}MDFB-hSal*Fj^$Otr&q$0Qo%Qv z!jqbc=N;zdQ`3Mc;VVsPz;p%XjFbLVbTZuSOvQZtXxQm}Xf_~4az^Cdz!=|`=) zo0~zMy=juY9+5JfG+b*OZ?Kf;wm|G)a2YwwYro)XU?55(fjBf2cZtm9#Db^=2Y}P5W4q7$jEw_{LH8 ztqiOFn5^sQrt{l;o%2v#lgF`9EF}B-%^Co4r@Y$c_ zcWXn7ABU7y%@CUoGuP>>hx64FdsVR28@fCdt<`i1W1b;2J>sgTvK?u0$A-UqH?e$Z zRgb1^IM=qS{Nsx#$W_5-w=bWjge%}sa>ZaTvFS)vuc5kaZ5^?fGTXGi%TY@&xxY>M z795MYF3q;0WoGdcD*(LxxAFqGRjvBv0V)gt;0)s0rsBmAgs)E&_#%ys5k#d9h~wU- z3iu4&CJ%_w-B0sZmAB20i_;CSii?5TauEW6>M8(Wzx6NZUIzk$%8&pM3IVX9Om#9W zQ%YAI|VjH?39VGIbR< zO`NyAP9Pls2zNk$qV}LE9ObZH1k5Ko=ztlVWG|H&Hng8A03RyL91sVEZ?Y)l0Dz## zg!qqm4t#5+DXX2UQ*j(D!5T2xGvy9#MZ0p zGAaU({P5c8MHje8?lmfo77Hz{-69WoT2iZPJ0kd(O3}7zn$#6rf*A0dfP296ZPy+e zqm=2#K=9ECa37!r#F-4iXMH2jwUy>FA{hK1(M6f77cPpUWj|`E0wc=>h0Yh-V z`@`2|y311uxQH$EPm4zF`X5nZ=dm+fG4|LQUdw*${8)nke#lSZCnJAZloON}B-DP4 zCjboqKFz;l<>HYQ++yWNqDF3n$ujrUSV)s>Ho!2b^LWjaxyWQqdG3_;n)%>H|fU4YJJ*e(Z?)V?73_ z5@-_GpR~!vAm}e&t_6XN%fAE2(z4Vw_Nd^%0DuLoLV(o+HI*+0~5FA7fMw{L`aU@7ZSU7-c& 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 literal 17786 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 KB<)6^VgDC9qa;QE diff --git a/data/sounds/effects/ogg/WirelessChargingStarted.ogg b/data/sounds/effects/ogg/WirelessChargingStarted.ogg new file mode 100644 index 0000000000000000000000000000000000000000..66f6cd251822410b0031d8b8962fcdb2a4e2f5ac GIT binary patch literal 12025 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
Pzt4$R4(rEWU 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 /system/media/audio/ui/Lock.ogg /system/media/audio/ui/Unlock.ogg + /system/media/audio/ui/WirelessChargingStarted.ogg + false false diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index 4e5fc3781c896..ba19307493896 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -71,7 +71,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' // is properly propagated through your change. Not doing so will result in a loss of user // settings. - private static final int DATABASE_VERSION = 94; + private static final int DATABASE_VERSION = 95; private Context mContext; private int mUserHandle; @@ -1505,6 +1505,23 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 94; } + if (upgradeVersion == 94) { + // Add wireless charging started sound setting + db.beginTransaction(); + SQLiteStatement stmt = null; + try { + stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)" + + " VALUES(?,?);"); + loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, + R.string.def_wireless_charging_started_sound); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + if (stmt != null) stmt.close(); + } + upgradeVersion = 95; + } + // *** Remember to update DATABASE_VERSION above! if (upgradeVersion != currentVersion) { @@ -2191,6 +2208,8 @@ public class DatabaseHelper extends SQLiteOpenHelper { R.string.def_car_dock_sound); loadStringSetting(stmt, Settings.Global.CAR_UNDOCK_SOUND, R.string.def_car_undock_sound); + loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND, + R.string.def_wireless_charging_started_sound); loadSetting(stmt, Settings.Global.SET_INSTALL_LOCATION, 0); loadSetting(stmt, Settings.Global.DEFAULT_INSTALL_LOCATION, diff --git a/services/java/com/android/server/power/Notifier.java b/services/java/com/android/server/power/Notifier.java index 5e056934e8357..d99d523f5cf59 100644 --- a/services/java/com/android/server/power/Notifier.java +++ b/services/java/com/android/server/power/Notifier.java @@ -23,6 +23,10 @@ import android.app.ActivityManagerNative; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.media.AudioManager; +import android.media.Ringtone; +import android.media.RingtoneManager; +import android.net.Uri; import android.os.BatteryStats; import android.os.Handler; import android.os.Looper; @@ -32,6 +36,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.os.WorkSource; +import android.provider.Settings; import android.util.EventLog; import android.util.Slog; import android.view.WindowManagerPolicy; @@ -64,6 +69,7 @@ final class Notifier { private static final int MSG_USER_ACTIVITY = 1; private static final int MSG_BROADCAST = 2; + private static final int MSG_WIRELESS_CHARGING_STARTED = 3; private final Object mLock = new Object(); @@ -312,6 +318,20 @@ final class Notifier { } } + /** + * Called when wireless charging has started so as to provide user feedback. + */ + public void onWirelessChargingStarted() { + if (DEBUG) { + Slog.d(TAG, "onWirelessChargingStarted"); + } + + mSuspendBlocker.acquire(); + Message msg = mHandler.obtainMessage(MSG_WIRELESS_CHARGING_STARTED); + msg.setAsynchronous(true); + mHandler.sendMessage(msg); + } + private void updatePendingBroadcastLocked() { if (!mBroadcastInProgress && mActualPowerState != POWER_STATE_UNKNOWN @@ -473,6 +493,23 @@ final class Notifier { } }; + private void playWirelessChargingStartedSound() { + final String soundPath = Settings.Global.getString(mContext.getContentResolver(), + Settings.Global.WIRELESS_CHARGING_STARTED_SOUND); + if (soundPath != null) { + final Uri soundUri = Uri.parse("file://" + soundPath); + if (soundUri != null) { + final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri); + if (sfx != null) { + sfx.setStreamType(AudioManager.STREAM_SYSTEM); + sfx.play(); + } + } + } + + mSuspendBlocker.release(); + } + private final class NotifierHandler extends Handler { public NotifierHandler(Looper looper) { super(looper, null, true /*async*/); @@ -488,6 +525,10 @@ final class Notifier { case MSG_BROADCAST: sendNextBroadcast(); break; + + case MSG_WIRELESS_CHARGING_STARTED: + playWirelessChargingStartedSound(); + break; } } } diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java index 7f83c17c94a69..5a5d91000ef14 100644 --- a/services/java/com/android/server/power/PowerManagerService.java +++ b/services/java/com/android/server/power/PowerManagerService.java @@ -1150,6 +1150,16 @@ public final class PowerManagerService extends IPowerManager.Stub } userActivityNoUpdateLocked( now, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, Process.SYSTEM_UID); + + // Tell the notifier whether wireless charging has started so that + // it can provide feedback to the user. Refer to + // shouldWakeUpWhenPluggedOrUnpluggedLocked for justification of the + // heuristics used here. + if (!wasPowered && mIsPowered + && mPlugType == BatteryManager.BATTERY_PLUGGED_WIRELESS + && mBatteryLevel < WIRELESS_CHARGER_TURN_ON_BATTERY_LEVEL_LIMIT) { + mNotifier.onWirelessChargingStarted(); + } } } }