diff options
| -rw-r--r-- | services/core/java/com/android/server/media/AudioPlayerStateMonitor.java | 23 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionServiceImpl.java | 2 |
2 files changed, 23 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java b/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java index 603d7cfb4525..eb706d7791d3 100644 --- a/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java +++ b/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java @@ -142,7 +142,8 @@ class AudioPlayerStateMonitor { /** * Returns the sorted list of UIDs that have had active audio playback. (i.e. playing an - * audio/video) The UID whose audio playback becomes active at the last comes first. + * audio/video) The UID whose audio is currently playing comes first, then the UID whose audio + * playback becomes active at the last comes next. */ public IntArray getSortedAudioPlaybackClientUids() { IntArray sortedAudioPlaybackClientUids = new IntArray(); @@ -253,6 +254,26 @@ class AudioPlayerStateMonitor { mSortedAudioPlaybackClientUids.add(0, uid); } } + + if (mActiveAudioUids.size() > 0 + && !mActiveAudioUids.contains(mSortedAudioPlaybackClientUids.get(0))) { + int firstActiveUid = -1; + int firatActiveUidIndex = -1; + for (int i = 1; i < mSortedAudioPlaybackClientUids.size(); ++i) { + int uid = mSortedAudioPlaybackClientUids.get(i); + if (mActiveAudioUids.contains(uid)) { + firatActiveUidIndex = i; + firstActiveUid = uid; + break; + } + } + for (int i = firatActiveUidIndex; i > 0; --i) { + mSortedAudioPlaybackClientUids.set(i, + mSortedAudioPlaybackClientUids.get(i - 1)); + } + mSortedAudioPlaybackClientUids.set(0, firstActiveUid); + } + // Notify the active state change of audio players. for (AudioPlaybackConfiguration config : configs) { final int pii = config.getPlayerInterfaceId(); diff --git a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java index cdfd948f4bd4..a5f22175331d 100644 --- a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java @@ -171,7 +171,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { mAudioPlayerStateMonitor = AudioPlayerStateMonitor.getInstance(mContext); mAudioPlayerStateMonitor.registerListener( (config, isRemoved) -> { - if (isRemoved || !config.isActive() || config.getPlayerType() + if (config.getPlayerType() == AudioPlaybackConfiguration.PLAYER_TYPE_JAM_SOUNDPOOL) { return; } |