监控代码:
telephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
phoneListener = new PhoneCallListener();
telephonyMgr.listen(phoneListener, PhoneCallListener.LISTEN_CALL_STATE);
类定义:
private class PhoneCallListener extends PhoneStateListener {
MediaPlayer mp = new MediaPlayer();
private int musicVolume = 0;
private int ringVolume = 0;
public PhoneCallListener() {
}
private Handler myHandler = new Handler(Looper.getMainLooper()) {
};
@Override
public void onCallStateChanged(int state, String incomingNumber) {
mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
incomingNumber = incomingNumber.replace("+86", "");
String speechString = "...";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 待机状态
LOG.e("TAG", "CALL_STATE_IDLE");
if (isJustNowCalling) {
isJustNowCalling = false;
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 电话通话中
LOG.e("TAG", "CALL_STATE_OFFHOOK");
isJustNowCalling = true;
break;
case TelephonyManager.CALL_STATE_RINGING:// 有电话来电
LOG.e("TAG", "CALL_STATE_RINGING");
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}