package com.handsomezhou.networkdemo.listener; import com.handsomezhou.networkdemo.helper.NetworkHelper; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; public class CustomPhoneStateListener extends PhoneStateListener{ private static final String TAG="CustomPhoneStateListener"; private static int mLastState=TelephonyManager.CALL_STATE_IDLE; @Override public void onCallStateChanged(int state, String incomingNumber) { NetworkHelper.getInstance().setCallState(state); switch (state) { case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "state:["+state+"]"+"incomingNumber:["+incomingNumber+"]"); if((getmLastState()==TelephonyManager.CALL_STATE_RINGING)||(getmLastState()==TelephonyManager.CALL_STATE_OFFHOOK)){ NetworkHelper.getInstance().NetworkChange(); } break; case TelephonyManager.CALL_STATE_RINGING: Log.i(TAG, "state:["+state+"]"+"incomingNumber:["+incomingNumber+"]"); NetworkHelper.getInstance().NetworkChange(); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "state:["+state+"]"+"incomingNumber:["+incomingNumber+"]"); NetworkHelper.getInstance().NetworkChange(); break; default: break; } setmLastState(state); super.onCallStateChanged(state, incomingNumber); } public static int getmLastState() { return mLastState; } public static void setmLastState(int mLastState) { CustomPhoneStateListener.mLastState = mLastState; } }