2012-11-14 53 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