好不要说用phonestatelistener,这个只能获得 idle、offhook、ringing状态,这其实都不能判断接通的。
其实这个没有api的
实现的方法是靠log。。
貌似腾讯 的qq通讯录也有这个功能 但是不稳定兼容性不佳
我研究的app都是靠log来实现的
D/RILJ ( 190): [11256]< GET_CURRENT_CALLS [id=1,ACTIVE,toa=129,norm,mt,0,voc,noevp,,cli=1,,0]
通过 logcat -b radio 过滤读取
Java code
Process localProcess = Runtime.getRuntime().exec("logcat -b radio");
InputStream lips = localProcess.getInputStream();
InputStreamReader lisr = new InputStreamReader(lips);
BufferedReader lbfr = new BufferedReader(lisr);
String str = lbfr.readLine();
然后判断 是否包含日志 正则匹配下 GET_CURRENT_CALLS.*ACTIVE
后台开启一个服务 在开始一个线程。一直读取实现监听。。
缺点是不是很灵敏。。貌似 qq通讯录应该也是这么干的。。有时候容易失效
android源码里面是有以下状态的:
IDLE,//待机,没有连接
ACTIVE,//通话
HOLDING,//挂断通话
DIALING,//响铃
ALERTING,//提醒
INCOMING,//来电
WAITING,//等待接通
DISCONNECTED,//连接断开后
DISCONNECTING;//连接断开工程中