用户自动完成电话后如何播放音频

时间:2014-09-18 09:10:42

标签: android phone-state-listener

我在onCreate()方法中使用下面的代码,pauses music当有人calls我或我做make a call时,我需要再做一件事,一旦用户完成了通话在它离开的地方(不是从开始)再次自动开始播放歌曲

仍有用户必须再次点击播放按钮才能启动音频

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

                if(mPlayer.isPlaying()){ 
                    mPlayer.pause();
                    }
            }

            } else if(state == TelephonyManager.CALL_STATE_IDLE) {
            } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {

            if(mPlayer!=null) {

                if(mPlayer.isPlaying()){ 
                    mPlayer.pause();
                    }
                }
            }
            super.onCallStateChanged(state, incomingNumber);
            }
            };

            TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
            if(mgr != null) {
            mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
            } 
    } // end of onCreate() method

2 个答案:

答案 0 :(得分:1)

当通话结束时,状态将返回空闲状态,因此您应该在空闲状态下恢复音乐:

else if(state == TelephonyManager.CALL_STATE_IDLE) {
    if(!mPlayer.isPlaying()){ 
                mPlayer.start();  
                }
        }

答案 1 :(得分:0)

我还致力于创建音乐播放器,以及下面的代码工作。希望它有所帮助。 此外,您可能需要在呼叫时使用广播创建类,或使用VoIP ...

private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        public void onCallStateChanged(int state, String incomingNumber) {
            if (state == TelephonyManager.CALL_STATE_RINGING
                    || state == TelephonyManager.CALL_STATE_OFFHOOK) {
                mPlayer.pause();
                mTelephonyMgr.listen(mPhoneStateListener,
                        PhoneStateListener.LISTEN_NONE);
            }
            super.onCallStateChanged(state, incomingNumber);
        }
    };