2
我有一個可以在後臺播放音樂的播放器應用程序。 我正在使用AVAudioSessionDelegate來實現方法- (void)beginInterruption
和- (void)endInterruption
但我不知道如何確定用戶是否應答或他沒有。如果他在電話中回答我不想恢復播放音樂,但是如果他沒有,我想恢復它。如果用戶接聽電話,請停止播放音頻
我有一個可以在後臺播放音樂的播放器應用程序。 我正在使用AVAudioSessionDelegate來實現方法- (void)beginInterruption
和- (void)endInterruption
但我不知道如何確定用戶是否應答或他沒有。如果他在電話中回答我不想恢復播放音樂,但是如果他沒有,我想恢復它。如果用戶接聽電話,請停止播放音頻
這幅畫應該總結回答你的問題:
所以,基本上,你可以在applicationWillResignActive:
禁用音頻。如果呼叫未被應答,您可以繼續播放applicationDidBecomeActive:
中的音頻。
實際上,爲了避免音頻播放出現中斷,您可能還會嘗試在applicationDidEnterBackground:
中禁用音頻,但建議的方法如上所述。
我的應用程序應該在後臺工作,並且唯一需要禁用音頻的時間是發生中斷時。我閱讀[本文檔](http://disanji.net/iOS_Doc/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingAudioInterruptions/HandlingAudioInterruptions.html#//apple_ref/doc/uid/TP40007875-CH11-SW3),但不明白如何確定用戶是否通話或他沒有接聽。我嘗試使用'AudioSessionGetProperty()'函數來檢查'kAudioSessionProperty_InterruptionType'屬性,但它在兩種情況下都給了我相同的值。 – ZigDanis
您是否嘗試過在AVAudioSessionDelegate中使用' - endInterruptionWithFlags:'?它會告訴你,如果你可以繼續播放或不... – sergio
根據[this](http://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html#// apple_ref/doc/constant_group/Interruption_Flags)文檔'-endInterruptionWithFlags:'只返回一個值'AVAudioSessionInterruptionFlags_ShouldResume',所以它對我無幫助=( – ZigDanis