【android系统问题】呼叫状态变化
16lz
2021-01-23
测试。做一个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 {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubTelephonyManager 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;}@Overridepublic 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;}}};
不知怎么回事,我这边调试的结果,总会这样。
第一次呼入会出现一个“来电了”。
但是挂断之后就会出现两个“空闲时间”
再次呼入又会出现两个“来电了”
……以后的都是出现两次状态。
我都把实现都弄成了单例了还是出现问题,都不知道在哪里的问题。
有没有大神给指点下。
更多相关文章
- android之获取系统时间并作为文件名
- Android自定义view七时间轴(二)---横向的图表时间轴
- Android 隐藏状态栏 和 标题栏
- Android TimePickerDialog(原生安卓时间选择器)
- androidの4.4版本沉浸式透明状态栏与导航栏案例
- Android 屏幕方向以及UI界面状态的保存