Merge "audio service: simplify becoming noisy intent logic" into oc-dev am: 910311b356
am: e8d82e5d2d
Change-Id: I927e5e64bf605c2cd5f4ac03d0c3dfc02dfdbcc8
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index d2d69cb..eea5473 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -5189,7 +5189,9 @@
}
// Devices which removal triggers intent ACTION_AUDIO_BECOMING_NOISY. The intent is only
- // sent if none of these devices is connected.
+ // sent if:
+ // - none of these devices are connected anymore after one is disconnected AND
+ // - the device being disconnected is actually used for music.
// Access synchronized on mConnectedDevices
int mBecomingNoisyIntentDevices =
AudioSystem.DEVICE_OUT_WIRED_HEADSET | AudioSystem.DEVICE_OUT_WIRED_HEADPHONE |
@@ -5210,7 +5212,8 @@
devices |= dev;
}
}
- if (devices == device) {
+ int musicDevice = getDeviceForStream(AudioSystem.STREAM_MUSIC);
+ if ((device == musicDevice) && (device == devices)) {
sendMsg(mAudioHandler,
MSG_BROADCAST_AUDIO_BECOMING_NOISY,
SENDMSG_REPLACE,
@@ -5829,25 +5832,9 @@
// Must be called synchronized on mConnectedDevices
private void setForceUseInt_SyncDevices(int usage, int config) {
- switch (usage) {
- case AudioSystem.FOR_MEDIA:
- if (config == AudioSystem.FORCE_NO_BT_A2DP) {
- mBecomingNoisyIntentDevices &= ~AudioSystem.DEVICE_OUT_ALL_A2DP;
- } else { // config == AudioSystem.FORCE_NONE
- mBecomingNoisyIntentDevices |= AudioSystem.DEVICE_OUT_ALL_A2DP;
- }
- sendMsg(mAudioHandler, MSG_REPORT_NEW_ROUTES,
- SENDMSG_NOOP, 0, 0, null, 0);
- break;
- case AudioSystem.FOR_DOCK:
- if (config == AudioSystem.FORCE_ANALOG_DOCK) {
- mBecomingNoisyIntentDevices |= AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET;
- } else { // config == AudioSystem.FORCE_NONE
- mBecomingNoisyIntentDevices &= ~AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET;
- }
- break;
- default:
- // usage doesn't affect the broadcast of ACTION_AUDIO_BECOMING_NOISY
+ if (usage == AudioSystem.FOR_MEDIA) {
+ sendMsg(mAudioHandler, MSG_REPORT_NEW_ROUTES,
+ SENDMSG_NOOP, 0, 0, null, 0);
}
AudioSystem.setForceUse(usage, config);
}