我写了一个使用 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);
它仍然通过扬声器发出。
我找不到任何其他指导音频的方式。任何人都可以建议我做错了吗?
2 回答
根据Apple 的文档,仅当使用
kAudioSessionCategory_PlayAndRecord
类别时,音频会话路由覆盖才可用。您可以尝试将类别更改为
kAudioSessionCategory_PlayAndRecord
,并使用kAudioSessionProperty_OverrideCategoryDefaultToSpeaker
属性键将音频路由到扬声器。就像 Laurent 说的那样,尝试使用 PlayAndRecord:
使用
AVAudioSessionCategoryPlayAndRecord
非常重要,否则路线将无法进入扬声器。一旦为音频会话设置了覆盖路由,就可以使用AVAudioPlayer
实例并将一些输出发送到扬声器。希望对我这样的人有用。关于此的文档是分散的,但 Skype 应用证明它是可能的。坚持不懈,我的朋友们! :)
这里有一些 Apple 文档:http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html
在页面上搜索
kAudioSessionProperty_OverrideAudioRoute