我使用AVPlayer播放來自不同來源(包括iPod音樂庫)的聲音。由於AVPlayer是更低級別的AVAudioPlayer,我必須自己處理中斷。使用AVAudioPlayer不是一種選擇!爲什麼iOS不通知我的應用程序音頻會話中斷?
在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!
}
}
順便說一句。我希望在有電話或類似的中斷時執行此代碼。我誤解了蘋果宣佈的中斷?
感謝您的答覆。我也創造了一個這樣的工作。我現在要報告這個問題。 – miho