【发布时间】:2012-10-14 18:23:55
【问题描述】:
我正在使用 AVPlayer 播放来自不同来源(包括 iPod 音乐库)的声音。由于 AVPlayer 是更底层的 AVAudioPlayer,我必须自己处理中断。不能使用 AVAudioPlayer!
在 Apple 开发人员文档中,他们提到要么监听 AVAudioSessionInterruptionNotification,要么使用 AudioSessionInitialize 设置监听器。但是这样做时,我只在中断结束时收到通知,但由于their documents,我的应用应该能够同时处理这两个。
我正在使用以下代码来初始化我的音频会话:(简化版,删除了不重要的行)
AudioSessionInitialize(NULL, NULL, ARInterruptionListenerCallback, nil);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
下面是监听器的样子:
void ARInterruptionListenerCallback(void *inUserData, UInt32 interruptionState) {
if (interruptionState == kAudioSessionBeginInterruption) {
// Here is the code which is never called...
}
else if (interruptionState == kAudioSessionEndInterruption) {
// But this case will be executed!
}
}
顺便说一句。我期待当有电话或类似的中断时执行此代码。我是否误解了 Apple 声明的中断?
【问题讨论】:
-
嘿,@miho 我也有同样的问题。当我接到电话和 siri 中断工作正常时开始和结束。但是当我打开 iPod 音乐库并播放一些音乐文件时,会调用中断开始,但从不调用中断结束。请任何人对此有解决方案。请发帖所以我一定会放弃一个upWot。
标签: objective-c ios avaudiosession