0

在过去的几个小时里,我一直在搞砸这个问题,但我仍然无法找到解决方案。我正在创建一个使用 twilio 两个连接到用户的应用程序。我可以通过以下方式强制将音频输出到扬声器:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

问题是当我使用 MPMoviePlayerController 播放来自网络的流时。它接管音频会话并再次通过耳机强制它返回。我仍然可以与用户交谈,但我只能使用耳机(电话)扬声器来听到他们的声音。我已经尝试过许多不同的方式强制回到扬声器,但似乎没有任何效果,显然阻止 MPMoviePlayerController 使用 AudioSession 的能力已被弃用。关于如何解决这个问题的任何想法?我的代码在这里:

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
_streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:fullURL]];


[[_streamPlayer view] setFrame: [self.view bounds]];

[self.view addSubview: [_streamPlayer view]];


[_streamPlayer play];

提前感谢您的帮助。

4

1 回答 1

0

对此的答案是设置默认路由而不是覆盖它。您可以使用以下代码设置默认路由:

UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
于 2013-11-08T13:14:02.577 回答