`

【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;
		}
	}
	
}; 


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

有没有大神给指点下。
分享到:
评论

相关推荐

    Android实现监听电话呼叫状态的方法

    主要介绍了Android实现监听电话呼叫状态的方法,涉及Android权限控制及电话状态监听的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    android 电话拦截 呼叫转移

    android 电话拦截 呼叫转移 可以借鉴

    android系统原理及开发要点详解

     第15章“Android应用程序的设计思想”,本章的内容是基于通用的应用程序和GUI程序的通用设计思想,结合Android系统自身的特点,提出一些值得注意的问题和设计方法。  本书读者  本书适应广大的读者群,力求在...

    Android紧急呼叫代码

    Android程序实例,功能:电话列表逐个紧急呼叫,向数据库增加电话,从联系人列表增加.

    单工无线呼叫系统 单工无线呼叫系统

    单工无线呼叫系统 单工无线呼叫系统 单工无线呼叫系统

    呼叫中心系统问题——AOFAX呼叫中心系统提示未授权

    呼叫中心系统问题——AOFAX呼叫中心系统提示未授权。

    病房呼叫系统设计报告 .doc

    要求设计制作一个医院病房呼叫系统,其主要功能如下: 1. 呼叫功能:能实现8个病床对护士站的呼叫,病人有情况时,按一下自己床位边的呼叫按键,就能呼叫护士; 2. 显示功能:有病床呼叫时,护士站的数码管显示器上...

    呼叫中心系统源码(可用)

    简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统简单的呼叫中心系统...

    android区分来电时呼叫转移软件

    可以区分是本机来电还是经过呼叫转移来的电话。 android系统

    单工无线呼叫系统设计 单工无线呼叫系统设计

    单工无线呼叫系统设计单工无线呼叫系统设计 单工无线呼叫系统设计 单工无线呼叫系统设计

    android 系统中的几乎所有广播接收者

    BATTERY_CHANGED_ACTION 充电状态,或者电池的电量发生变化 "android.intent.action.BATTERY_CHANGED" BOOT_COMPLETED_ACTION 在系统启动后,这个动作被广播一次(只有一次) "android.intent.action.BOOT_COMPLETED" ...

    android呼叫中心

    手机视频聊天给移动视频交互和客服系统以及远程会议提供了方便,一款实用的视频呼叫软件。可以学习研究也可以商用

    基于51单片机的NRF2401无线病房呼叫系统主从机程序开源源码

    本系统采用51单片机和NRF2401实现无线数据传输通信和实时报警功能, 设计一套低成本通用型的病房呼叫系统。整个系统采用无线通信的方式, 降低了复杂的布线、安装检修和拆卸的难度, 并可监控多个病房且便于扩充升级...

    病房呼叫系统Multisim仿真实例

    病房呼叫系统Multisim仿真实例

    Android呼叫转移代码

    Android呼叫转移代码,参考的链接在http://www.cnblogs.com/klcf0220/p/3655867.html

    多功能病房呼叫系统

    病房呼叫系统是一种应用于医院病房、养老院等地方的专用呼叫系统,用来联系沟通医护人员和病人。当病人需要医护人员帮助时,可以通过病房呼叫系统发出呼叫请求。它为医护人员及时掌握突发急病患者、高危患者的呼救...

    网吧呼叫系统网吧语音呼叫网管V8.4绿色版

    网吧呼叫系统 ,采用全新的设计,相比以前各版本,网吧呼叫系统最完整、最稳定、最强大,可以满足所有语音呼叫的需求。集成语音呼叫网管、呼叫服务员、商品销售(有图片功能),在线信息,客户端可与服务端对话、可...

    病房紧急呼叫系统方案一.ms14

    1、一个病床有一个供病人呼叫的按键(至少四个病床)。呼叫后状态存在一组锁存...3、设计呼叫清除电路(一个按键),当医生处理完当前(最高优先级)显示的病号后,可将该呼叫清除,系统能自动显示优先级病床呼叫信号。

    一键呼叫的android项目

    简单的android的一建呼叫项目,点击一键呼叫按钮之后,会自动调用电话应用,并拨打电话号码。

    病房紧急呼叫系统方案二.ms14

    1、一个病床有一个供病人呼叫的按键(至少四个病床)。呼叫后状态存在一组锁存...3、设计呼叫清除电路(一个按键),当医生处理完当前(最高优先级)显示的病号后,可将该呼叫清除,系统能自动显示优先级病床呼叫信号。

Global site tag (gtag.js) - Google Analytics