Agora 在 iOS 台设备上使用了错误的扬声器 (Unity)
Agora using wrong speaker on iOS device (Unity)
初始化时
// init engine
mRtcEngine = IRtcEngine.GetEngine(appId);
if (mRtcEngine == null)
return;
mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_GAME);
mRtcEngine.SetClientRole(CLIENT_ROLE.BROADCASTER);
// set callbacks (optional)
mRtcEngine.OnJoinChannelSuccess = onJoinChannelSuccess;
mRtcEngine.OnUserJoined = onUserJoined;
mRtcEngine.OnUserOffline = onUserOffline;
mRtcEngine.EnableWebSdkInteroperability(true);
mRtcEngine.OnRemoteVideoStateChanged = OnRemoteVideoStateChangedHandler;
mRtcEngine.DisableAudio();
mRtcEngine.EnableAudioVolumeIndication(500, 3, true);
mRtcEngine.EnableVideo();
mRtcEngine.EnableVideoObserver();
mRtcEngine.EnableLocalVideo(false);
mRtcEngine.SetDefaultAudioRouteToSpeakerphone(true);
mRtcEngine.AdjustRecordingSignalVolume(0);]
mRtcEngine.SetLogFilter(LOG_FILTER.DEBUG | LOG_FILTER.INFO | LOG_FILTER.WARNING | LOG_FILTER.ERROR |
LOG_FILTER.CRITICAL);
我打电话
mRtcEngine.SetDefaultAudioRouteToSpeakerphone(真);
在我调用 JoinChannel() 之后
mRtcEngine.JoinChannel(channel, null, 0);
if (mRtcEngine.EnableVideoObserver() == Decimal.Zero)
{
mRtcEngine.EnableVideoObserver();
}
mRtcEngine.EnableAudio();
mRtcEngine.SetEnableSpeakerphone(true);
我调用 setEnableSpeakerphone(true)
但它仍然从耳机中发出(好像是 phone 呼叫),我是不是漏掉了一步?
第一组代码对我来说似乎没问题。但我认为你应该将第二组代码放入回调处理程序
// implement engine callbacks
private void onJoinChannelSuccess(string channelName, uint uid, int elapsed)
{
// mRtcEngine.EnableVideoObserver(); // you've called this!
mRtcEngine.EnableAudio();
mRtcEngine.SetEnableSpeakerphone(true);
}
我在 iPhone 上尝试了代码,它从扬声器中传出。请注意,您可能希望使用演示应用程序作为发件人应用程序来测试这一点,而不是重写的代码。
从
切换
mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_GAME);
至
mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_COMMUNICATION);
成功了。文档中有一条注释,游戏配置文件不允许更改扬声器。
初始化时
// init engine
mRtcEngine = IRtcEngine.GetEngine(appId);
if (mRtcEngine == null)
return;
mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_GAME);
mRtcEngine.SetClientRole(CLIENT_ROLE.BROADCASTER);
// set callbacks (optional)
mRtcEngine.OnJoinChannelSuccess = onJoinChannelSuccess;
mRtcEngine.OnUserJoined = onUserJoined;
mRtcEngine.OnUserOffline = onUserOffline;
mRtcEngine.EnableWebSdkInteroperability(true);
mRtcEngine.OnRemoteVideoStateChanged = OnRemoteVideoStateChangedHandler;
mRtcEngine.DisableAudio();
mRtcEngine.EnableAudioVolumeIndication(500, 3, true);
mRtcEngine.EnableVideo();
mRtcEngine.EnableVideoObserver();
mRtcEngine.EnableLocalVideo(false);
mRtcEngine.SetDefaultAudioRouteToSpeakerphone(true);
mRtcEngine.AdjustRecordingSignalVolume(0);]
mRtcEngine.SetLogFilter(LOG_FILTER.DEBUG | LOG_FILTER.INFO | LOG_FILTER.WARNING | LOG_FILTER.ERROR |
LOG_FILTER.CRITICAL);
我打电话 mRtcEngine.SetDefaultAudioRouteToSpeakerphone(真);
在我调用 JoinChannel() 之后
mRtcEngine.JoinChannel(channel, null, 0);
if (mRtcEngine.EnableVideoObserver() == Decimal.Zero)
{
mRtcEngine.EnableVideoObserver();
}
mRtcEngine.EnableAudio();
mRtcEngine.SetEnableSpeakerphone(true);
我调用 setEnableSpeakerphone(true)
但它仍然从耳机中发出(好像是 phone 呼叫),我是不是漏掉了一步?
第一组代码对我来说似乎没问题。但我认为你应该将第二组代码放入回调处理程序
// implement engine callbacks
private void onJoinChannelSuccess(string channelName, uint uid, int elapsed)
{
// mRtcEngine.EnableVideoObserver(); // you've called this!
mRtcEngine.EnableAudio();
mRtcEngine.SetEnableSpeakerphone(true);
}
我在 iPhone 上尝试了代码,它从扬声器中传出。请注意,您可能希望使用演示应用程序作为发件人应用程序来测试这一点,而不是重写的代码。
从
切换 mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_GAME);
至
mRtcEngine.SetChannelProfile(CHANNEL_PROFILE.CHANNEL_PROFILE_COMMUNICATION);
成功了。文档中有一条注释,游戏配置文件不允许更改扬声器。