Unity3d 连接新设备后设备计数错误
我将Agora与Unity集成在一起,我们有一个设备选择屏幕,用户可以在加入通话之前选择和测试他们的设备。 我遇到的问题是Agora没有在运行时检测到相应的设备更改,这不允许我更新UI以反映这些更改Unity3d 连接新设备后设备计数错误,unity3d,agora.io,Unity3d,Agora.io,我将Agora与Unity集成在一起,我们有一个设备选择屏幕,用户可以在加入通话之前选择和测试他们的设备。 我遇到的问题是Agora没有在运行时检测到相应的设备更改,这不允许我更新UI以反映这些更改 void Start() { // get Agora engine, should be initialized already in the AgoraIOController component agoraEngine = GetComponent<AgoraIOCont
void Start()
{
// get Agora engine, should be initialized already in the AgoraIOController component
agoraEngine = GetComponent<AgoraIOController>().GetAgoraEngine();
agoraEngine.OnAudioDeviceStateChanged += DeviceChangedHandler;
InitializeDeviceManager();
}
...
void DeviceChangedHandler(string deviceId, int deviceType, int deviceState)
{
devicesDirty = true;
onDevicesChanged.Invoke();
}
...
void RefreshDeviceList()
{
devices.Clear();
int audioDeviceCount = audioDeviceManager.GetAudioPlaybackDeviceCount();
if (audioDeviceCount == (int)ERROR_CODE.ERROR_NOT_INIT_ENGINE)
{
Debug.LogError("Agora engine not initialized, can't refresh devices");
return;
}
else if (audioDeviceCount < (int)ERROR_CODE.ERROR_OK)
{
Debug.LogError($"Unknown error while trying to get devices. Error code: {audioDeviceCount}");
return;
}
Debug.Log($"Found {audioDeviceCount} audio devices.");
for (int i = 0; i < audioDeviceCount; i++)
{
string deviceName = null;
string deviceId = null;
int result = audioDeviceManager.GetAudioPlaybackDevice(i, ref deviceName, ref deviceId);
if (result != (int)ERROR_CODE.ERROR_OK)
{
Debug.LogError("Error when trying to get audio device");
continue;
}
devices.Add(new AgoraDevice()
{
deviceId = deviceId,
deviceName = deviceName,
type = MEDIA_DEVICE_TYPE.AUDIO_RECORDING_DEVICE
});
}
}
由于您正在使用麦克风插头/插头进行测试,您是否打算在代码的第一部分中调用AudioPlaybackDeviceManager而不是AudioRecordingDeviceManager
void DeviceChangedHandler(string deviceId, int deviceType, int deviceState)
{
devicesDirty = true;
audioDeviceManager.ReleaseAAudioRecordingDeviceManager();
audioDeviceManager.CreateAAudioRecordingDeviceManager();
onDevicesChanged.Invoke();
}