我已经写了一个使用AVAudioPlayer播放音频的应用程序。
我已经实现了一个将音频切换到扬声器的函数:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);但当我尝试切换回耳机时,使用以下命令:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 它仍然通过扬声器进行路由。
我找不到任何其他方法来引导音频。有没有人能建议我哪里做错了?
发布于 2010-06-12 02:47:17
根据Apple's documentation,音频会话路由覆盖仅在使用kAudioSessionCategory_PlayAndRecord类别时可用。
您可以尝试将类别更改为kAudioSessionCategory_PlayAndRecord,并使用kAudioSessionProperty_OverrideCategoryDefaultToSpeaker属性键路由音频到扬声器。
发布于 2013-05-28 10:47:34
就像Laurent说的,试着像这样使用PlayAndRecord:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);使用AVAudioSessionCategoryPlayAndRecord非常重要,否则路由将无法到达扬声器。一旦为音频会话设置了覆盖路由,就可以使用AVAudioPlayer实例并向扬声器发送一些输出。
希望这对其他人有效,就像对我一样。关于这一点的文档是分散的,但Skype应用程序证明了这是可能的。坚持下去,我的朋友们!:)
这里有一些苹果文档:http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html
在页面上搜索kAudioSessionProperty_OverrideAudioRoute
https://stackoverflow.com/questions/2662585
复制相似问题