2012-10-16 51 views

回答

4

您不能直接找出所有原因,但可以縮小一點。

如果按下主頁按鈕並且應用程序被髮送到後臺,您的應用程序將在您的UIApplicationDelegate上收到applicationDidEnterBackground:調用。請注意,您將在撥打applicationWillResignActive:後收到此消息,因此可能無法幫助您。

你也可以註冊一個監聽音頻中斷

AudioSessionInitialize (
         NULL,       // 'NULL' to use the default (main) run loop 
         NULL,       // 'NULL' to use the default run loop mode 
         audioSessionInteruptionListener, // a reference to your interruption callback 
         self      // data to pass to your interruption listener callback 
         ); 

如果audioSessionInteruptionListener被調用,狀態kAudioSessionBeginInterruptionapplicationWillResignActive:之前,那麼你知道中斷是由電話或報警引起的。我認爲你沒有更多的信息。

編輯

其實,我覺得你可以去哪怕是一點點進一步分辨電話呼叫VS報警中斷。現在這還沒有經過測試,只是給出更多調查的起點。

我記得有一個註冊的回調陷阱音頻路由,並且當接到電話時,路由音頻從揚聲器/耳機變爲無到接收器。所以我想你可以使用上面描述的方法來捕獲AudioInterruption,並捕獲音頻路由變化。如果音頻路由變成接收者,則中斷是電話呼叫。否則,這是另一回事,就像鬧鐘。

我的目標是iOS 5.0,因此它可能不適用於以前的版本,您將不得不使用該文檔進行確認。

+0

謝謝你的回答,這很清楚。 – NewXcoder

相關問題