diff options
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionService.java | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index f97f6d2350bc..3e8af27d2584 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -105,7 +105,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; /** @@ -154,7 +153,7 @@ public class MediaSessionService extends SystemService implements Monitor { private UsageStatsManagerInternal mUsageStatsManagerInternal; /* Maps uid with all user engaging session tokens associated to it */ - private final Map<Integer, Set<MediaSession.Token>> mUserEngagingSessions = new HashMap<>(); + private final SparseArray<Set<MediaSession.Token>> mUserEngagingSessions = new SparseArray<>(); // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile) // It's always not null after the MediaSessionService is started. @@ -625,29 +624,27 @@ public class MediaSessionService extends SystemService implements Monitor { String packageName = record.getPackageName(); int sessionUid = record.getUid(); - String actionToLog = null; MediaSession.Token token = ((MediaSessionRecord) record).getSessionToken(); if (userEngaged) { - if (!mUserEngagingSessions.containsKey(sessionUid)) { + if (!mUserEngagingSessions.contains(sessionUid)) { mUserEngagingSessions.put(sessionUid, new HashSet<>()); - actionToLog = "start"; + reportUserInteractionEvent(/* action= */ "start", record.getUserId(), packageName); } mUserEngagingSessions.get(sessionUid).add(token); - } else if (mUserEngagingSessions.containsKey(sessionUid)) { + } else if (mUserEngagingSessions.contains(sessionUid)) { mUserEngagingSessions.get(sessionUid).remove(token); if (mUserEngagingSessions.get(sessionUid).isEmpty()) { - actionToLog = "stop"; + reportUserInteractionEvent(/* action= */ "stop", record.getUserId(), packageName); mUserEngagingSessions.remove(sessionUid); } } + } - if (actionToLog != null) { - PersistableBundle extras = new PersistableBundle(); - extras.putString(UsageStatsManager.EXTRA_EVENT_CATEGORY, "android.media"); - extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, actionToLog); - mUsageStatsManagerInternal.reportUserInteractionEvent( - packageName, record.getUserId(), extras); - } + private void reportUserInteractionEvent(String action, int userId, String packageName) { + PersistableBundle extras = new PersistableBundle(); + extras.putString(UsageStatsManager.EXTRA_EVENT_CATEGORY, "android.media"); + extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, action); + mUsageStatsManagerInternal.reportUserInteractionEvent(packageName, userId, extras); } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, |