Tweak the selection of media button session

Key events were sent to the session which the lastly activated player app has.
After this CL, key events will be sent to a session 1) which the app
making sounds has, or 2) which the lastly activated player app has.

Bug: 113240750
Test: manually
Change-Id: I6ac128458fd0d30c9e0ed3382939ca9e4e581e22
This commit is contained in:
Sungsoo Lim
2019-04-12 19:10:56 +09:00
parent cf44c41158
commit cc19772447
2 changed files with 23 additions and 2 deletions

View File

@@ -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();

View File

@@ -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;
}