Exemplo n.º 1
0
        public SpotifyAudioSession(int?audioEndPointDeviceIndex)
        {
            AudioEndPointDeviceIndex = audioEndPointDeviceIndex;

            AudioMMDevices = new MMDeviceEnumerator();
            UpdateAudioEndPointDevices();

            _spotifyProcessesIds        = SpotifyProcess.GetSpotifyProcesses().Select(x => x.Id).ToList();
            _spytifyProcess             = Process.GetCurrentProcess();
            SpotifyAudioSessionControls = new List <AudioSessionControl>();
        }
Exemplo n.º 2
0
        private async Task <bool> IsSpotifyPlayingOutsideDefaultAudioEndPoint(bool running)
        {
            int?spotifyAudioSessionProcessId = null;

            while (running && spotifyAudioSessionProcessId == null && SpotifyProcess.GetSpotifyProcesses().Select(x => x.Id).Any())
            {
                var allSessionsAudioEndPointDevices = GetAllSessionsOfAudioEndPointDevices;

                foreach (var sessionAudioEndPointDevice in allSessionsAudioEndPointDevices)
                {
                    for (var i = 0; i < sessionAudioEndPointDevice.Count; i++)
                    {
                        var currentAudioSessionControl = sessionAudioEndPointDevice[i];
                        var currentProcessId           = (int)currentAudioSessionControl.GetProcessID;
                        if (!IsSpotifyAudioSessionControl(currentProcessId))
                        {
                            continue;
                        }

                        spotifyAudioSessionProcessId = currentProcessId;
                    }
                }

                AudioMMDevices = new MMDeviceEnumerator();
                UpdateAudioEndPointDevices();
                await Task.Delay(300);
            }

            var sessionAudioSelectedEndPointDevice = GetSessionsAudioEndPointDevice;

            for (var i = 0; i < sessionAudioSelectedEndPointDevice.Count; i++)
            {
                var currentAudioSessionControl = sessionAudioSelectedEndPointDevice[i];
                var currentProcessId           = (int)currentAudioSessionControl.GetProcessID;
                if (currentProcessId != spotifyAudioSessionProcessId)
                {
                    continue;
                }

                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        private async Task SetSpotifyAudioSessionsAndProcessId(bool running)
        {
            _spotifyAudioSessionProcessId = null;

            while (running && _spotifyAudioSessionProcessId == null && _spotifyProcessesIds.Any())
            {
                var sessionsAudioEndPointDevices = AudioMMDevices
                                                   .EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active)
                                                   .Select(x => x.AudioSessionManager.Sessions)
                                                   .ToList();

                lock (sessionsAudioEndPointDevices)
                {
                    foreach (var sessionAudioEndPointDevice in sessionsAudioEndPointDevices)
                    {
                        for (var i = 0; i < sessionAudioEndPointDevice.Count; i++)
                        {
                            var currentAudioSessionControl = sessionAudioEndPointDevice[i];
                            var currentProcessId           = (int)currentAudioSessionControl.GetProcessID;
                            if (!IsSpotifyAudioSessionControl(currentProcessId))
                            {
                                continue;
                            }
                            if (!SpotifyAudioSessionControls.Contains(currentAudioSessionControl))
                            {
                                SpotifyAudioSessionControls.Add(currentAudioSessionControl);
                            }
                            _spotifyAudioSessionProcessId = currentProcessId;
                            break;
                        }

                        if (_spotifyAudioSessionProcessId.HasValue)
                        {
                            break;
                        }
                    }
                }

                await Task.Delay(300);

                _spotifyProcessesIds = SpotifyProcess.GetSpotifyProcesses(_processManager).Select(x => x.Id).ToList();
            }
        }
Exemplo n.º 4
0
 public SpotifyAudioSession()
 {
     _spotifyProcessesIds         = SpotifyProcess.GetSpotifyProcesses().Select(x => x.Id).ToList();
     _spytifyProcess              = Process.GetCurrentProcess();
     _spotifyAudioSessionControls = new List <AudioSessionControl>();
 }
Exemplo n.º 5
0
 public void SetSpotifyProcesses()
 {
     _spotifyProcessesIds = SpotifyProcess.GetSpotifyProcesses(_processManager).Select(x => x.Id).ToList();
 }