iOS 7+ AVAudioPlayer来自手机的内耳片

时间:2014-07-30 08:24:28

标签: ios avaudioplayer

我想知道如何使用AVAudioPlayer播放音频到手机的内部耳机。

当连接耳机时,音频应播放其必须播放的内部耳机(AVAudioPlayer永远不应播放电话的底部扬声器)。

有没有办法实现这个目标?欢迎iOS 7+答案!

1 个答案:

答案 0 :(得分:1)

有趣的是,有关Android问题的答案有多少,iOS问题答案要少得多。

这是我设法找到的解决方案:

NSError *error;
// Initialize Audio Player
_player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:_audioPath] error:&error];
// Set Audio Session to "Play and Record", UNFORTUNATELY this is the only way to play
// from the internal speaker. It asks the user to grant Recording permission to the app.
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: &setCategoryError];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
if (setCategoryError) {
    CLS_LOG(@"Error routing audio: %@",setCategoryError);
    [self.navigationController popViewControllerAnimated:YES];
}
[_player prepareToPlay];
// And now you can play from the internal speaker.

您可以看到我必须使用AVAudioSessionCategoryPlayAndRecord,因为它是唯一一种将音频路由到接收器的类别(在通话时您握住的小扬声器)请参阅{{ 3}}供参考。

实际上,有一个名为the audio session programming guide的方法看起来很有希望,但它只能用AVAudioSessionCategoryPlayAndRecord强制设备使用外部扬声器,反之亦然。