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>(); }
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); }
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(); } }
public SpotifyAudioSession() { _spotifyProcessesIds = SpotifyProcess.GetSpotifyProcesses().Select(x => x.Id).ToList(); _spytifyProcess = Process.GetCurrentProcess(); _spotifyAudioSessionControls = new List <AudioSessionControl>(); }
public void SetSpotifyProcesses() { _spotifyProcessesIds = SpotifyProcess.GetSpotifyProcesses(_processManager).Select(x => x.Id).ToList(); }