2

我开发了一个与音乐相关的安卓应用程序。我在处理来电时的媒体播放器时遇到问题。我想在通话期间暂停音频,并在通话结束后恢复。我需要建议是否使用带有 onstatechanged 的​​ TelephonyManager 来暂停和恢复音频(或)在来电期间暂停和恢复应用程序本身的任何其他方法。

4

2 回答 2

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);
}

并通过取消注册成为一个好的安卓公民onDestroy

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

当用户接听电话时,CALL_STATE_OFFHOOK将被调用。您可以编写代码来暂停播放。

于 2012-11-14T11:29:22.133 回答
3

在您的活动中使用onPause()和方法。onResume()当有来电时,会调用 onPause() 方法。挂断电话时会调用 onResume() 。

即使用户单击从其他应用程序发送的通知,这也将起作用。

于 2012-11-14T11:25:02.687 回答