/// <inheritdoc/> public void OnDefaultDeviceChanged(DataFlow flow, Role role, string defaultDeviceId) { if (flow == CaptureDeviceDataFlow && role == CaptureDeviceRole) { UpdateDefaultDevice(); DefaultPlaybackDeviceChanged?.Invoke(this, EventArgs.Empty); } }
private void DeviceManager_DefaultPlaybackDeviceChanged(object sender, IAudioDevice e) { if (e == null) { DefaultPlaybackDevice = null; DefaultPlaybackDeviceChanged?.Invoke(this, DefaultPlaybackDevice); } else { var dev = AllDevices.FirstOrDefault(d => d.Id == e.Id); if (dev != null) { DefaultPlaybackDevice = dev; DefaultPlaybackDeviceChanged?.Invoke(this, DefaultPlaybackDevice); } } }
private void QueryDefaultPlaybackDevice() { Trace.WriteLine("AudioDeviceManager QueryDefaultPlaybackDevice"); IMMDevice device = null; try { device = _enumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); } catch (Exception ex) when(ex.Is(Error.ERROR_NOT_FOUND)) { // Expected. } string newDeviceId = device?.GetId(); var currentDeviceId = _defaultPlaybackDevice?.Id; if (currentDeviceId != newDeviceId) { FindDevice(newDeviceId, out _defaultPlaybackDevice); DefaultPlaybackDeviceChanged?.Invoke(this, _defaultPlaybackDevice); } }