In-game audio device selection
Allow players to select audio input and output devices.
Read time 1 minuteLast updated 2 days ago
The Vivox SDK automatically uses the system default audio input and output devices. However, you can override this behavior and provide users with a choice of which audio device to use for group voice chat independent of the audio devices that are used for the game. To perform this override, build a user interface for the game that displays a list of available devices to users that they can select a device from. Build this user interface with the following requests, where audio output devices are called render devices, and audio input devices are called capture devices:
VivoxCoreError IAudioDevices::SetActiveDevice(const FString \&device, const FOnSetActiveDeviceCompletedDelegate \&theDelegate=FOnSetActiveDeviceCompletedDelegate())const TMap<FString, IAudioDevice *> \&IAudioDevices::AvailableDevices()const IAudioDevice IAudioDevices::CommunicationDevice()const IAudioDevice IAudioDevices::SystemDevice()const IAudioDevice IAudioDevices::NullDevice()const IAudioDevice IAudioDevices::ActiveDevice()const IAudioDevice IAudioDevices::EffectiveDevice()
IAudioDevices::AvailableDevicesTMap<FString, IAudioDevice \*>IAudioDeviceIAudioDeviceIAudioDevices::SetActiveDeviceWhen a user selects a new device, the game passes the appropriatevoid UMyClass::SetAudioDevice(const IAudioDevice &inputToSet, const IAudioDevice &outputToSet){ // IClient *VivoxVoiceClient; if (VivoxVoiceClient->AudioInputDevices().ActiveDevice().Id() != inputToSet.Id()) { VivoxVoiceClient->AudioInputDevices().SetActiveDevice(inputToSet); } if (VivoxVoiceClient->AudioOutputDevices().ActiveDevice().Id() != outputToSet.Id()) { VivoxVoiceClient->AudioOutputDevices().SetActiveDevice(outputToSet); }}
IAudioDeviceIAudioDevices::SetActiveDeviceIAudioDevices::SystemDevice()IAudioDevices::CommunicationDevice()IAudioDevices::SetActiveDeviceActiveDeviceIAudioDevices::NullDevice()IAudioDevices::EventAfterDeviceAvailableAddedIAudioDevices::EventBeforeAvailableDeviceRemovedIAudioDevices::EventEffectiveDeviceChanged