diff options
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioDeviceInventory.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index 37f0496c0db3..b77a36107b9c 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -854,11 +854,20 @@ public final class AudioDeviceInventory { if (musicDevice == AudioSystem.DEVICE_NONE) { musicDevice = mDeviceBroker.getDeviceForStream(AudioSystem.STREAM_MUSIC); } - // ignore condition on device being actually used for music when in communication + + // always ignore condition on device being actually used for music when in communication // because music routing is altered in this case. - // also checks whether media routing if affected by a dynamic policy + // also checks whether media routing if affected by a dynamic policy or mirroring if (((device == musicDevice) || mDeviceBroker.isInCommunication()) - && (device == devices) && !mDeviceBroker.hasMediaDynamicPolicy()) { + && (device == devices) && !mDeviceBroker.hasMediaDynamicPolicy() + && ((musicDevice & AudioSystem.DEVICE_OUT_REMOTE_SUBMIX) == 0)) { + if (!AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC, 0 /*not looking in past*/)) { + // no media playback, not a "becoming noisy" situation, otherwise it could cause + // the pausing of some apps that are playing remotely + AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + "dropping ACTION_AUDIO_BECOMING_NOISY, no media playback")).printLog(TAG)); + return 0; + } mDeviceBroker.postBroadcastBecomingNoisy(); delay = 1000; } |