使用MPMoviePlayerController强制音频通过扬声器

时间:2013-11-07 06:43:51

标签: ios7 mpmovieplayercontroller avaudiosession

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

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];

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
相关问题