关于android来电监听产生可移动悬浮窗结果产生多个悬浮窗的问题。

前些日子由于功能需要做一个来电悬浮窗就搜索了一下相应的demo。但是,我发现所有的demo都有可能产生多个悬浮窗,刚开始弄了一下午也没解决,也在eoe提问了还是没解决。最后自己在打印log时发现了一个问题。我修改后的代码如下(主要是电话响铃状态):
/**
* 监听手机来电状态
*/
PhoneStateListener listener = new PhoneStateListener() {

@Override
public void onCallStateChanged(int state, final String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 电话挂断状态
popPhoneRemove();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 电话接听状态
popPhoneRemove();
break;
case TelephonyManager.CALL_STATE_RINGING:// 电话铃响状态
if(!flag && !TextUtils.isEmpty(incomingNumber)){
flag = true;
telRinging(incomingNumber);// 打开来电悬浮窗界面,传递来电号码
}
break;
default:

break;
}
}

};
我在电话响铃状态加了log打印输出日志发现这个case有时会走多次,然后我也到stackoverflow上搜索了一下。最后才知道貌似android本身的这个响铃监听确实存在触发多次的问题。因此我就在自己的代码响铃监听出加了一个flag标志位。触发后就把它置为true,从而避免这个case多次的问题。当然你也可以参考他们的回答也能解决问题
相关参考:
http://stackoverflow.com/questions/13620134/telephonymanager-call-state-idle-calls-more-than-one-time
http://stackoverflow.com/questions/18853511/telephonymanager-call-state-ringing-calls-twice-while-one-call-ringing
最后我想请教大家监听去电接听或者挂断如何实现。小弟感激不尽。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值