Wireless charging sound used for wired charging
Test: manual (plug/unplug with charging sounds enabled)
Change-Id: Ic97cd15421804ff4b6edacfc20dd81515835d58d
Fixes: 70259821
Bug: 29737261
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 6f62f6b..b73df9d 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -8373,10 +8373,10 @@
private static final Validator POWER_SOUNDS_ENABLED_VALIDATOR = BOOLEAN_VALIDATOR;
/**
- * URI for the "wireless charging started" sound.
+ * URI for the "wireless charging started" and "wired charging started" sound.
* @hide
*/
- public static final String WIRELESS_CHARGING_STARTED_SOUND =
+ public static final String CHARGING_STARTED_SOUND =
"wireless_charging_started_sound";
/**
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index 6602bf6..ed356d0 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -17,11 +17,9 @@
package android.provider;
import static com.google.android.collect.Sets.newHashSet;
-
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
-
import static java.lang.reflect.Modifier.isFinal;
import static java.lang.reflect.Modifier.isPublic;
import static java.lang.reflect.Modifier.isStatic;
@@ -440,7 +438,7 @@
Settings.Global.WIFI_WATCHDOG_ON,
Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON,
Settings.Global.WINDOW_ANIMATION_SCALE,
- Settings.Global.WIRELESS_CHARGING_STARTED_SOUND,
+ Settings.Global.CHARGING_STARTED_SOUND,
Settings.Global.WTF_IS_FATAL,
Settings.Global.ZEN_MODE,
Settings.Global.ZEN_MODE_CONFIG_ETAG,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 1dc8e46..cfcfb95 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -43,7 +43,6 @@
import android.text.TextUtils;
import android.util.Log;
-import com.android.ims.ImsConfig;
import com.android.internal.content.PackageHelper;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.RILConstants;
@@ -1504,7 +1503,7 @@
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO global(name,value)"
+ " VALUES(?,?);");
- loadStringSetting(stmt, Settings.Global.WIRELESS_CHARGING_STARTED_SOUND,
+ loadStringSetting(stmt, Settings.Global.CHARGING_STARTED_SOUND,
R.string.def_wireless_charging_started_sound);
db.setTransactionSuccessful();
} finally {
@@ -2578,7 +2577,7 @@
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,
+ loadStringSetting(stmt, Settings.Global.CHARGING_STARTED_SOUND,
R.string.def_wireless_charging_started_sound);
loadIntegerSetting(stmt, Settings.Global.DOCK_AUDIO_MEDIA_ENABLED,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 537e8dc..39f2b52 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -160,7 +160,7 @@
Settings.Global.POWER_SOUNDS_ENABLED,
GlobalSettingsProto.POWER_SOUNDS_ENABLED);
dumpSetting(s, p,
- Settings.Global.WIRELESS_CHARGING_STARTED_SOUND,
+ Settings.Global.CHARGING_STARTED_SOUND,
GlobalSettingsProto.WIRELESS_CHARGING_STARTED_SOUND);
dumpSetting(s, p,
Settings.Global.CHARGING_SOUNDS_ENABLED,
diff --git a/services/core/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java
index a536270..3072f21 100644
--- a/services/core/java/com/android/server/power/Notifier.java
+++ b/services/core/java/com/android/server/power/Notifier.java
@@ -85,6 +85,7 @@
private static final int MSG_WIRELESS_CHARGING_STARTED = 3;
private static final int MSG_SCREEN_BRIGHTNESS_BOOST_CHANGED = 4;
private static final int MSG_PROFILE_TIMED_OUT = 5;
+ private static final int MSG_WIRED_CHARGING_STARTED = 6;
private final Object mLock = new Object();
@@ -571,6 +572,20 @@
mHandler.sendMessage(msg);
}
+ /**
+ * Called when wired charging has started so as to provide user feedback
+ */
+ public void onWiredChargingStarted() {
+ if (DEBUG) {
+ Slog.d(TAG, "onWiredChargingStarted");
+ }
+
+ mSuspendBlocker.acquire();
+ Message msg = mHandler.obtainMessage(MSG_WIRED_CHARGING_STARTED);
+ msg.setAsynchronous(true);
+ mHandler.sendMessage(msg);
+ }
+
private void updatePendingBroadcastLocked() {
if (!mBroadcastInProgress
&& mPendingInteractiveState != INTERACTIVE_STATE_UNKNOWN
@@ -703,11 +718,14 @@
}
};
- private void playWirelessChargingStartedSound() {
+ /**
+ * Plays the wireless charging sound for both wireless and non-wireless charging
+ */
+ private void playChargingStartedSound() {
final boolean enabled = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.CHARGING_SOUNDS_ENABLED, 1) != 0;
final String soundPath = Settings.Global.getString(mContext.getContentResolver(),
- Settings.Global.WIRELESS_CHARGING_STARTED_SOUND);
+ Settings.Global.CHARGING_STARTED_SOUND);
if (enabled && soundPath != null) {
final Uri soundUri = Uri.parse("file://" + soundPath);
if (soundUri != null) {
@@ -721,11 +739,16 @@
}
private void showWirelessChargingStarted(int batteryLevel) {
- playWirelessChargingStartedSound();
+ playChargingStartedSound();
mStatusBarManagerInternal.showChargingAnimation(batteryLevel);
mSuspendBlocker.release();
}
+ private void showWiredChargingStarted() {
+ playChargingStartedSound();
+ mSuspendBlocker.release();
+ }
+
private void lockProfile(@UserIdInt int userId) {
mTrustManager.setDeviceLockedForUser(userId, true /*locked*/);
}
@@ -753,6 +776,8 @@
case MSG_PROFILE_TIMED_OUT:
lockProfile(msg.arg1);
break;
+ case MSG_WIRED_CHARGING_STARTED:
+ showWiredChargingStarted();
}
}
}
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index db83158..1bb85c4 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1747,6 +1747,10 @@
// it can provide feedback to the user.
if (dockedOnWirelessCharger || DEBUG_WIRELESS) {
mNotifier.onWirelessChargingStarted(mBatteryLevel);
+ } else if (mIsPowered && !wasPowered
+ && (mPlugType == BatteryManager.BATTERY_PLUGGED_AC
+ || mPlugType == BatteryManager.BATTERY_PLUGGED_USB)) {
+ mNotifier.onWiredChargingStarted();
}
}