Loading services/core/java/com/android/server/media/MediaSessionService.java +11 −14 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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. Loading Loading @@ -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) { 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, actionToLog); mUsageStatsManagerInternal.reportUserInteractionEvent( packageName, record.getUserId(), extras); } extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, action); mUsageStatsManagerInternal.reportUserInteractionEvent(packageName, userId, extras); } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, Loading Loading
services/core/java/com/android/server/media/MediaSessionService.java +11 −14 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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. Loading Loading @@ -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) { 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, actionToLog); mUsageStatsManagerInternal.reportUserInteractionEvent( packageName, record.getUserId(), extras); } extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, action); mUsageStatsManagerInternal.reportUserInteractionEvent(packageName, userId, extras); } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, Loading