7

我正在使用 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];
}

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

4

3 回答 3

1

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

于 2011-10-29T19:32:46.097 回答
1

从您的代码中奇怪的是,您告诉您确实使用了 AVAudioPlayer,为什么还要实现 AVAudioSessionDelegate?

而且您对委托方法的实现很差。查看文档

来自 AVAudioPlayerDelegate:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player

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

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

于 2011-10-27T04:52:34.467 回答
1

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

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
于 2014-01-29T07:39:20.003 回答