2012-11-14 48 views
2

我開發了一個音樂相關的android應用程序。來電時處理媒體播放器時遇到問題。我想在通話過程中暫停音頻並在通話結束後恢復。我需要建議是否使用帶有onstatechanged的TelephonyManager暫停和恢復音頻(或)任何其他方法,以在傳入呼叫期間暫停和恢復應用程序本身。處理來自Android應用程序的來電

回答

3

在您的活動中使用onPause()onResume()方法。來電時,調用onPause()方法。並且在呼叫掛斷時調用onResume()。

即使用戶點擊某個其他應用發送的通知,也可以使用該功能。

+1

如果您希望在未將活動放在前景中的情況下繼續播放音樂,則效果並不理想。 – Syntax

5

這裏你去

在清單中包含以下權限。

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

然後

PhoneStateListener phoneStateListener = new PhoneStateListener() { 
    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     if (state == TelephonyManager.CALL_STATE_RINGING) { 

     } else if(state == TelephonyManager.CALL_STATE_IDLE) { 
      Play music 
     } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) { 
      Pause music 
     } 
     super.onCallStateChanged(state, incomingNumber); 
    } 
}; 


TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
if(mgr != null) { 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 

而且是一個很好的Android公民在onDestroy

if(mgr != null) { 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE); 
} 

中註銷當用戶拿起電話,然後CALL_STATE_OFFHOOK將得到called.There你可以寫代碼暫停播放。

+0

它工作正常,但我想停止音頻只有當用戶接受呼叫不是在狀態響鈴。 – user1526671

+0

@ user1526671查看我的更新回答。 –

+0

謝謝...它工作正常...... – user1526671

相關問題