2011-07-13 77 views
0

Android有沒有一種可靠的方式來檢測來電和去電的開始和結束,以便執行諸如暫停和播放音頻等操作。Android 2.1+撥入/撥出電話暫停,完成後恢復

我也做了以下內容:

telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
      callEventListener = new PhoneStateListener(){ 

       @Override 
       public void onCallStateChanged(int state, String incomingNumber) { 
        super.onCallStateChanged(state, incomingNumber); 
        if (state == TelephonyManager.CALL_STATE_IDLE){ 
         //.... 
        } 
        else if (state == TelephonyManager.CALL_STATE_RINGING){ 
         //.... 
        } 
       } 
      }; 
telephonyManager.listen(callEventListener, PhoneStateListener.LISTEN_CALL_STATE); 

這似乎來電工作,但撥出電話,我得到了CALL_STATE_IDLE當對方拿起......不能當電話結束。我想我一定是在做一些愚蠢的事情,或者錯過了一些我可以檢查的東西?

回答

1

你是正確的,因爲當外出呼叫開始時你沒有得到任何狀態更新。

您需要掛入意向廣播ACTION_NEW_OUTGOING_CALL。這是一個Android Developer Blog,可能有助於瞭解這是一個有序廣播的事實。這裏有一個blog post,舉一個簡單的例子來說明如何設置和使用這個廣播。