public void AddDevice(Device device) { if (device.DeviceName.Contains("none")) { return; } if (!ContainDevice(device.DeviceHandle)) { devices.Add(device); switch (device.DeviceType) { case DeviceType.AUDIOINPUT: case DeviceType.AUDIOOUTPUT: { var audioInput = GetDevicesByType(DeviceType.AUDIOINPUT).FirstOrDefault(); var audioOutput = GetDevicesByType(DeviceType.AUDIOOUTPUT).FirstOrDefault(); var inputHandle = audioInput?.DeviceHandle; var outputHandle = audioOutput?.DeviceHandle; if (null == CurrentAudioInputDevice && null != audioInput) { CurrentAudioInputDevice = audioInput; WrapperProxy.SetAudioDevice(inputHandle, outputHandle); WrapperProxy.SetAudioDeviceForRingtone(outputHandle); } if (null == CurrentAudioOutputDevice && null != outputHandle) { CurrentAudioOutputDevice = audioOutput; WrapperProxy.SetAudioDevice(inputHandle, outputHandle); WrapperProxy.SetAudioDeviceForRingtone(outputHandle); } } break; case DeviceType.VIDEOINPUT: { if (null == CurrentAudioOutputDevice) { var video = GetDevicesByType(DeviceType.VIDEOINPUT).FirstOrDefault(); var videoHandle = video?.DeviceHandle; if (null != videoHandle) { CurrentVideoInputDevice = video; WrapperProxy.SetVideoDevice(videoHandle); } } } break; } } }