android音乐播放器监听电话状态,解决通话中的音乐的播放

在音乐播放时电话打进来当然不希望音乐和来电铃声一同在响,所以下面的代码能解决此问题。



在 MusicPlayService中先创建一个电话状态监听的方法

  /**
     * 电话状态监听事件
     */
    private boolean mResumeAfterCall = false;
    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            if (state == TelephonyManager.CALL_STATE_RINGING) {
                AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                int ringvolume = audioManager
                        .getStreamVolume(AudioManager.STREAM_RING);
                if (ringvolume > 0) {
                    mResumeAfterCall = (getMusicPlayState() || mResumeAfterCall);
                    //当电话打进来时,就设置为停止播放状态
                    getAireMusicPlay().setPlayStatus(false);
                }
            } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                // pause the music while a conversation is in progress
                mResumeAfterCall = (getMusicPlayState() || mResumeAfterCall);
                getAireMusicPlay().setPlayStatus(false);
            } else if (state == TelephonyManager.CALL_STATE_IDLE) {
                // start playing again
                if (mResumeAfterCall) {
//当电话挂断是时,就设置为播放状态
getAireMusicPlay().setPlayStatus(true); mResumeAfterCall = false; } } } };

 
  
 
  
在MusicPlayService的onCreate()方法中
@Override
    public void onCreate() {
     
     	//电话监听的主要这两句
        TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        tmgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }


 
  
在MusicPlayService的onDestroy()方法中
public void onDestroy() {
       
        TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        tmgr.listen(mPhoneStateListener, 0);
        super.onDestroy();
    }


 
  

你可能感兴趣的:(Android,Service,Android)