处理多个AVAudioPlayers的中断

时间:2010-07-08 15:40:59

标签: iphone avaudioplayer interrupt

当我有一个以上的AVPlayer时,是否可以通过AVPLayer委托来处理中断? 我已经尝试了几个东西,在电话后再次启动两个AVPlayer,但仍然只有一个响应并启动,第二个暂停并且什么也没做。

2 个答案:

答案 0 :(得分:0)

我的猜测是你需要保留players的数组,这样你就可以浏览它们并暂停/启动每个数组。您可以在创建可在audioPlayerBeginInterruption:audioPlayerEndInterruption:

中访问的播放器时将每个阵列添加到阵列中

Apple的文档暗示中断只处理一个player ...如果该类声明方法输入players而不是player那么我会说你可能只有完成了一个for循环,通过它们进行轮询,如下面的代码:

AVAudioPlayer *player; 
for (player in players) {

    [player pause];
    //or [player play];
}

http://developer.apple.com/iphone/library/documentation/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/Reference/Reference.html#//apple_ref/occ/intfm/AVAudioPlayerDelegate/audioPlayerBeginInterruption

答案 1 :(得分:0)

我确定你已经解决了这个问题,但我还是想记录我的答案。我刚刚在iPhone上测试了这个(4.3.2),我的应用程序正在使用两个不同的AVAudioPlayers播放两种不同的声音。在接到电话时,我会为每个玩家中断两种中断方法:

- (void)audioPlayerBeginInterruption:(AVAudioPlayer *) player;
- (void)audioPlayerEndInterruption:(AVAudioPlayer *) player;

所以你可以很容易地重新启动两个玩家:

- (void) audioPlayerEndInterruption:(AVAudioPlayer *) player {
  NSLog (@"Interruption ended. Resuming audio playback.");
  [player prepareToPlay];
  [player play];
}