处理Android应用程序中的传入调用

use*_*671 2 android telephonymanager android-mediaplayer

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

Vip*_*hah 5

干得好

在清单中包含以下权限.

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)

然后

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);
}
Run Code Online (Sandbox Code Playgroud)

并通过取消注册成为一个好的机器人公民 onDestroy

if(mgr != null) {
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}
Run Code Online (Sandbox Code Playgroud)

当用户接听电话然后CALL_STATE_OFFHOOK将被呼叫.你可以编写代码来暂停播放.