framwork涉及到telephony的流程系列之电话流程三

拨打流程

EXTRA_CALL_ORIGIN

ACTION_NEW_OUTGOING_CALL

→startSipCallOptionHandler

→Intent.ACTION_CALL

PhoneUtils.java

app.mCM.dial(phone, numberToDial, callDetails);

->callmanager.java

  public Connection dial(Phone phone, String dialString, CallDetails callDetails)

→basePhone.dial(dialString, callDetails);

->phone.java->gsmphone.java

      public Connection dial(String dialString, UUSInfo uusInfo, CallDetails calldetails)

CallTracker.java

  public Connection dial(String dialString, UUSInfo uusInfo)

->GSMcalltracker.java

public Connection

    dial(String dialString, UUSInfo uusInfo)

->CommandsInterface.java

  void dial(String address, int clirMode, UUSInfo uusInfo, Message result);

->ril.java

 public void dial(String address, int clirMode, UUSInfo uusInfo, Message result)

->RIL_REQUEST_DIAL

电话状态状态变化上报,界面显示处理:

incallscreen.java

->registerForPhoneStates

->mCM.registerForPreciseCallStateChanged(mHandler, PHONE_STATE_CHANGED, null);

当mhandle的handleMessage收到PHONE_STATE_CHANGED消息后

调用  onPhoneStateChanged((AsyncResult) msg.obj);

->requestUpdateScreen();

-> requestUpdateScreen(false);

->void requestUpdateScreen(boolean ignoreReAction)

->mHandler.obtainMessage(REQUEST_UPDATE_SCREEN, ignoreReAction).sendToTarget();

当mhandle的handleMessage收到 REQUEST_UPDATE_SCREEN消息后

调用 updateScreen(param);

->mCallCard.updateState(mCM);

->callcard.java

 void updateState(CallManager cm)

->  updateRingingCall(cm);/updateForegroundCall(cm);/updateNoCall(cm);

->displayMainCallStatus(cm, fgCall);

->updateDisplayForPerson(info, Connection.PRESENTATION_ALLOWED, false, call, conn);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值