In-game audio device selection
Allow players to select audio input and output devices.
阅读时间1 分钟最后更新于 18 小时前
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