using Windows.Media.Control; namespace Hyperbar.Windows.Primary; public class MediaControllerInitializer : IInitializer { private readonly List sessions = []; public async Task InitializeAsync() { GlobalSystemMediaTransportControlsSessionManager mediaTransportControlsSessionManager = await GlobalSystemMediaTransportControlsSessionManager.RequestAsync(); mediaTransportControlsSessionManager.SessionsChanged += OnSessionsChanged; IReadOnlyList sessions = mediaTransportControlsSessionManager.GetSessions(); foreach (var session in sessions) { this.sessions.Add(session); } } private void OnSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender, SessionsChangedEventArgs args) { IReadOnlyList sessions = sender.GetSessions(); foreach (var session in this.sessions.ToList()) { if (!sessions.Contains(session)) { this.sessions.Remove(session); } } foreach (var session in sessions) { if (!this.sessions.Contains(session)) { this.sessions.Add(session); } } } }