您的位置:首页 > 其它

安卓phone对通话状态的监听

2015-03-13 10:59 162 查看
首先是register了一堆需要监听的信号

private void registerForPhoneStates(CallManager cm) {
cm.registerForPreciseCallStateChanged(mHandler, PHONE_STATE_CHANGED, null);
cm.registerForDisconnect(mHandler, PHONE_DISCONNECT, null);
cm.registerForMmiInitiate(mHandler, PhoneGlobals.MMI_INITIATE, null);
// register for the MMI complete message.  Upon completion,
// PhoneUtils will bring up a system dialog instead of the
// message display class in PhoneUtils.displayMMIComplete().
// We'll listen for that message too, so that we can finish
// the activity at the same time.
cm.registerForMmiComplete(mHandler, PhoneGlobals.MMI_COMPLETE, null);
cm.registerForCallWaiting(mHandler, PHONE_CDMA_CALL_WAITING, null);
cm.registerForPostDialCharacter(mHandler, POST_ON_DIAL_CHARS, null);
cm.registerForSuppServiceFailed(mHandler, SUPP_SERVICE_FAILED, null);
cm.registerForIncomingRing(mHandler, PHONE_INCOMING_RING, null);
cm.registerForNewRingingConnection(mHandler, PHONE_NEW_RINGING_CONNECTION, null);
}
第一个就是registerForPreciseCallStateChanged

然后查看mHandler

private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (mIsDestroyed) {
if (DBG) log("Handler: ignoring message " + msg + "; we're destroyed!");
return;
}
if (!mIsForegroundActivity) {
 if (DBG) log("Handler: handling message " + msg + " while not in foreground");
}

switch (msg.what) {
case SUPP_SERVICE_FAILED:
onSuppServiceFailed((AsyncResult) msg.obj);
break;

case PHONE_STATE_CHANGED:
onPhoneStateChanged((AsyncResult) msg.obj);
break;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: