如何获取 AVPlayer 的中断开始/结束事件
Posted
技术标签:
【中文标题】如何获取 AVPlayer 的中断开始/结束事件【英文标题】:How to get interruption start/end events for AVPlayer 【发布时间】:2013-03-19 15:04:07 【问题描述】:我正在使用AVPlayer
播放音频文件。
我实现了AVAudiosessionInterruptionNotification
。
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 播放器并开始播放。当时并没有调用它的中断,即使我的应用程序进入前台也是如此。 可能是什么问题。请帮忙。
【问题讨论】:
【参考方案1】:如果你使用AVAudioPlayer
,你可以遵循AVAudioPlayerDelegate
,那么你可以实现类似- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
的方法
更多方法列于docs。
【讨论】:
感谢您的回复。我得到了 AVAudioPlayer 的代表。但我想知道是否有任何方法可以使用 AVPlayer 来实现这一点。你能提出一个想法吗? 我对 AVPlayer 没有太多经验,但这个 SO 问题涵盖了同样的问题:***.com/questions/6837002/… 无论如何我正在将我的 AVPlayer 更改为 AVAudioPlayer。谢谢你的建议。 哈哈很高兴我能帮上忙。快乐编码。 :) 如果您尝试从网络流式传输音频,这将不起作用。【参考方案2】:要在AVPlayer
在后台中断时收到通知,您可以收听 AudioSession 的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStopped) name:AVAudioSessionInterruptionNotification object:nil];
【讨论】:
以上是关于如何获取 AVPlayer 的中断开始/结束事件的主要内容,如果未能解决你的问题,请参考以下文章