【android系统问题】呼叫状态变化

测试。做一个Receiver监听手机通话状态。发现这样个问题。
package com.duduli.call;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageStats;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;

public class CallComingReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// System.out.println("a");
tm.listen(MyPhoneState.getInstance(), PhoneStateListener.LISTEN_CALL_STATE);
// System.out.println("b");

//
// Bundle b = intent.getExtras();
// String phoneNr= b.getString("incoming_number");
// if(phoneNr != null){
// System.out.println(phoneNr);
// }
// System.out.println(tm.getLine1Number());

}



}



package com.duduli.call;

import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;


public class MyPhoneState extends PhoneStateListener{
private int last_state = TelephonyManager.CALL_STATE_IDLE;
private MyPhoneState(){}
private static MyPhoneState mps = null;
public static MyPhoneState getInstance(){
if(mps == null){
mps = new MyPhoneState();
}
return mps;
}

@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
// super.onCallStateChanged(state, incomingNumber);


switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// System.out.println("空闲时间");
// System.out.println("CALL_STATE_IDLE");
last_state = TelephonyManager.CALL_STATE_IDLE;
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// System.out.println("CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
if(last_state == TelephonyManager.CALL_STATE_IDLE){
System.out.println("发送邮件0------?");
last_state = TelephonyManager.CALL_STATE_RINGING;
}
// System.out.println("来电了");
// System.out.println("CALL_STATE_RINGING");
break;
default:
break;
}
}

};


不知怎么回事,我这边调试的结果,总会这样。
第一次呼入会出现一个“来电了”。
但是挂断之后就会出现两个“空闲时间”
再次呼入又会出现两个“来电了”
……以后的都是出现两次状态。
我都把实现都弄成了单例了还是出现问题,都不知道在哪里的问题。

有没有大神给指点下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值