2013-04-20 56 views
2

我註冊了一個PHONE_STATE偵聽器,以檢測用戶何時開始和結束呼叫。如果有人想知道,我嚴格按照有趣和學習的方式來做,所以沒有隱私問題。在Android中結束第二個呼叫時未收到電話狀態事件

無論如何,我在使用telnet和模擬器進行實驗時發現了一個問題。在一個呼叫處於保持狀態而第二個呼叫(活動呼叫)結束的特定情況下,我的收聽者不會收到任何事件。當第一個電話被再次激活時,我期待它至少能夠接收另一個OFFHOOK,如果不是這兩個IDLE + OFFHOOK。但是什麼都沒有。

在相關說明中,我還注意到沒有定義用於暫掛呼叫的電話狀態事件,這對我來說似乎也有點奇怪。

當然,Android日誌條目正確地反映了這些事件。問題是,我如何可靠地在代碼中檢測它們?我應該監視日誌本身(不確定是否有可能),而不是依賴電話狀態監聽器?

我正在通過Xamarin Studio在模擬器上測試API 15,所以我的代碼是C#+ Xamarin.Android,而不是直接使用Java。這可能是因爲這種行爲只是其中一個層次中的錯誤或遺漏,但更可能是我錯過了一些明顯的東西。

FWIW,我還沒有在真實設備上測試過我的代碼。我知道某些硬件的行爲可能與我在模擬器中看到的有所不同。

任何幫助,將不勝感激!

回答

1

是的,這是一個問題。當有多個呼叫時很難檢測到:

第一個呼叫可以通過idle to offhookringing to offhook檢測到,即撥號或呼入。現在,當電話進入offhook to ringing時,我們知道第二個電話是傳入的。如果您撥打第二個電話,它的offhook to offhook,因此無法從這裏檢測到。 (雖然你可以聽撥號廣播)。現在,如果第二個電話被拒絕,我們會收到ringing to offhook,這讓接聽電話很困惑。

恕我直言,只是3種狀態是不夠的,跟蹤多個電話,但是這就是API支持暫時。

相關問題