2013-03-19 64 views
5

我正在使用AVPlayer播放音频文件。我实施了AVAudioSessionInterruptionNotification如何获取AVPlayer的中断开始/结束事件

AVAudioSession *session = [AVAudioSession sharedInstance]; 
    NSError *errorInAudio = nil; 
    [session setActive:YES error:&errorInAudio]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruption:) name:AVAudioSessionInterruptionNotification object:nil]; 

    [session setCategory:AVAudioSessionCategoryPlayback error:nil]; 

当应用程序在前台(如语音控制)时发生中断时,它可以正常工作。
但我在后台模式下创建了应用程序并打开了iPod播放器并开始播放。当时甚至当我的应用程序进入前台时,它的中断不会被调用。
可能是什么问题。请帮忙。

回答

3

如果使用AVAudioPlayer可以符合AVAudioPlayerDelegate那么你就可以实现像docs上市- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

多个方法的方法。

+0

感谢您的答复。我得到了AVAudioPlayer的代表。但我想知道是否有任何方法使用AVPlayer来实现这一点。你能提出一个想法吗? – 2013-03-19 15:41:36

+0

我对AVPlayer没有太多的经验,但是这个SO问题涵盖了同样的问题:http://stackoverflow.com/questions/6837002/no-avplayer-delegate-how-to-track-when-song-finished -playing-objective-c-iphon – 2013-03-19 15:54:12

+0

无论如何,我正在将AVPlayer更改为AVAudioPlayer。谢谢你的建议。 – 2013-03-19 18:16:58

1

得到通知时AVPlayer在后台被中断,你可以听的AudioSession的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStopped) name:AVAudioSessionInterruptionNotification object:nil]; 
相关问题