如何在外出电话(iOS)后恢复背景音乐?

时间:2011-10-27 04:36:43

标签: iphone audio background resume

我正在使用AVAudioPlayer播放音乐(支持背景)。我的问题是,如果我想在听音乐的时候给某人打电话,如何在通话后恢复音乐?我已经实现了AVAudioPlayer的委托方法:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)thePlayer {
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

但这不允许音乐继续播放。

我也试过使用AVAudioSessionDelegate方法(只是一试):

- (void)viewDidLoad {
    [[AVAudioSession sharedInstance] setDelegate:self];
}

- (void)endInterruption
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

但这又不会导致音乐恢复。关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:1)

你的代码很奇怪,你告诉你使用AVAudioPlayer,为什么然后实现AVAudioSessionDelegate?

你的委托方法实施不好。见文档

from AVAudioPlayerDelegate:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags

所以尝试像这样实现它们,它应该正常工作

答案 1 :(得分:1)

在iOS上,应用无法在后台播放音频。如果您的应用程序的音频因前景应用已控制音频会话而停止,则(目前)无法将其取回。

答案 2 :(得分:1)

你可以恢复它。完成音频会话后,您必须通知其他应用程序我的应用程序停用音频会话,您可以使用它。使用以下代码。

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];