Loading services/core/java/com/android/server/media/MediaSessionService.java +30 −23 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ 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 @@ -151,7 +152,9 @@ public class MediaSessionService extends SystemService implements Monitor { private boolean mHasFeatureLeanback; private ActivityManagerInternal mActivityManagerInternal; private UsageStatsManagerInternal mUsageStatsManagerInternal; private final Set<Integer> mUserEngagingSessions = new HashSet<>(); /* Maps uid with all user engaging session tokens associated to it */ private final Map<Integer, Set<MediaSession.Token>> mUserEngagingSessions = new HashMap<>(); // 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 @@ -615,24 +618,28 @@ public class MediaSessionService extends SystemService implements Monitor { } private void reportMediaInteractionEvent(MediaSessionRecordImpl record, boolean userEngaged) { if (!android.app.usage.Flags.userInteractionTypeApi()) { if (!android.app.usage.Flags.userInteractionTypeApi() || !(record instanceof MediaSessionRecord)) { return; } String packageName = record.getPackageName(); int sessionUid = record.getUid(); String actionToLog = null; MediaSession.Token token = ((MediaSessionRecord) record).getSessionToken(); if (userEngaged) { if (!mUserEngagingSessions.contains(sessionUid)) { if (!mUserEngagingSessions.containsKey(sessionUid)) { mUserEngagingSessions.put(sessionUid, new HashSet<>()); actionToLog = "start"; } mUserEngagingSessions.add(sessionUid); } else { if (mUserEngagingSessions.contains(sessionUid)) { mUserEngagingSessions.get(sessionUid).add(token); } else if (mUserEngagingSessions.containsKey(sessionUid)) { mUserEngagingSessions.get(sessionUid).remove(token); if (mUserEngagingSessions.get(sessionUid).isEmpty()) { actionToLog = "stop"; } mUserEngagingSessions.remove(sessionUid); } } if (actionToLog != null) { PersistableBundle extras = new PersistableBundle(); Loading Loading
services/core/java/com/android/server/media/MediaSessionService.java +30 −23 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ 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 @@ -151,7 +152,9 @@ public class MediaSessionService extends SystemService implements Monitor { private boolean mHasFeatureLeanback; private ActivityManagerInternal mActivityManagerInternal; private UsageStatsManagerInternal mUsageStatsManagerInternal; private final Set<Integer> mUserEngagingSessions = new HashSet<>(); /* Maps uid with all user engaging session tokens associated to it */ private final Map<Integer, Set<MediaSession.Token>> mUserEngagingSessions = new HashMap<>(); // 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 @@ -615,24 +618,28 @@ public class MediaSessionService extends SystemService implements Monitor { } private void reportMediaInteractionEvent(MediaSessionRecordImpl record, boolean userEngaged) { if (!android.app.usage.Flags.userInteractionTypeApi()) { if (!android.app.usage.Flags.userInteractionTypeApi() || !(record instanceof MediaSessionRecord)) { return; } String packageName = record.getPackageName(); int sessionUid = record.getUid(); String actionToLog = null; MediaSession.Token token = ((MediaSessionRecord) record).getSessionToken(); if (userEngaged) { if (!mUserEngagingSessions.contains(sessionUid)) { if (!mUserEngagingSessions.containsKey(sessionUid)) { mUserEngagingSessions.put(sessionUid, new HashSet<>()); actionToLog = "start"; } mUserEngagingSessions.add(sessionUid); } else { if (mUserEngagingSessions.contains(sessionUid)) { mUserEngagingSessions.get(sessionUid).add(token); } else if (mUserEngagingSessions.containsKey(sessionUid)) { mUserEngagingSessions.get(sessionUid).remove(token); if (mUserEngagingSessions.get(sessionUid).isEmpty()) { actionToLog = "stop"; } mUserEngagingSessions.remove(sessionUid); } } if (actionToLog != null) { PersistableBundle extras = new PersistableBundle(); Loading