summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java25
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,