您的位置:首页 > 移动开发 > Android开发

关于android来去电监控的一点总结

2012-04-15 15:01 323 查看
最近在项目中需要监控通话状态。于是查阅了TelephonyManager相关的API。实现通话状态的监控主要有2种途径:1、注册一个listener来捕获通话中的各种状态(Applications can also register a listener to receive notification of telephony state changes)。2、注册一个监听打电话的广播。

第一种方式貌似只能在activity或Services自身运行的时候才能执行(说法不准确或不当的欢迎拍砖指正)。而第二种则又分两种情况:一、静态注册的广播,在程序退出的情况下,任然能够监听。二、动态注册的广播只能在程序执行的时候进行监控,退出了则失效。

下面主要说说怎样通过系统广播来实现(在这里只说说静态注册,动态注册请查阅API)。

manifest.xml文件如下:

因为我的项目中需要获取来去电号码,所以在这里监听了 拨打电话中的两个动作:NEW_OUTGOING_CALL和PHONE_STATE,当然这需要声明相应的权限,否则报错。

注册好了之后就可以实现BroadcastReceiver中的onReceive方法。在该方法中你就可以获取所需的数据啦。在这里有必要说明的是BroadcastReceiver的生命周期是很短暂的。任何耗时的异步操作不能在onReceive中执行。因为在返回结果之前,系统已经释放了BroadcastReceiver进程。例如:你不能在BroadcastReceiver里显示一个dialog或绑定一个service。如果实现要在这里给出提示可以使用NotificationManager。

监控效果如下:

来电:





来电一

电话处于响铃状态,此时可以获取来电号码





来电二

进入通话状态





来电三

挂机……

去电:





去电一

电话接通之前……





去电二

接听……





去电三

通话中……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息