android4.0打电话,来电过程

ICS 打电话流程
1.DialpadFragment.java,onClick()->dialButtonPressed()
2.OutgoingCallBroadcaster.java,onCreate()
sendOrderedBroadcast(broadcastIntent, PERMISSION, new OutgoingCallReceiver(),
                             null,  // scheduler
                             Activity.RESULT_OK,  // initialCode
                             number,  // initialData: initial value for the result data
                             null);  // initialExtras
3.OutgoingCallReceiver,doReceive()->startSipCallOptionHandler()
4.SipCallOptionHandler.java,onCreate()->setResultAndFinish()
PhoneApp.getInstance().callController.placeCall(mIntent);

5.CallController.java,placeCall()

placeCallInternal->PhoneUtils.java,placeCall()->CallManager.java,dial()->CDMAPhone.java,dial()->RIL.java,dial()

mApp.setBeginningCall(true);//enable the proximity sensor
mApp.displayCallScreen();
6.PhoneApp.java,startActivity(createInCallIntent())

7.InCallScreen.java,onCreate()(第一次)onNewIntent()(非第一次)

onResume()->syncWithPhoneState()->updateScreen()(更新通话界面)->mCallCard.updateState(mPhone);

8.CallCard.java,updateState()->updateForegroundCall()->displayMainCallStatus()->updateDisplayForPerson()

9.CdmaCallTracker.java,operationComplete()->EVENT_POLL_CALLS_RESULT(cm.getCurrentCalls请求CLCC命令)->handlePollCalls()->phone.notifyPreciseCallStateChanged


来电过程

1.CdmaCallTracker.java,EVENT_CALL_STATE_CHANGE->EVENT_POLL_CALLS_RESULT->handlePollCalls()->phone.notifyNewRingingConnection(newRinging);
2.CallNotifier.java,PHONE_NEW_RINGING_CONNECTION->onNewRingingConnection()->startIncomingCallQuery()->PhoneUtils.startGetCallerInfo()
3.CallNotifier.java,onPhoneStateChanged()
4.InCallScreen.java,onPhoneStateChanged()
5.CallNotifier.java,onCustomRingQueryComplete()(mRinger.ring()响铃)->showIncomingCall()更新UI
6.如果接通电话,则调用InCallScreen.java,handleOnscreenButtonClick()->internalAnswerCall()->PhoneUtils.answerCall(ringing)(停止响铃,然后接听电话)
7.InCallScreen.java,onPhoneStateChanged()更新界面,完成接听电话功能。


通话界面更新

1.InCallScreen.java,handleOnscreenButtonClick()->updateInCallTouchUi()

2.InCallTouchUi.java,updateState()->updateInCallControls()->mInCallScreen.getUpdatedInCallControlState()

3.InCallControlState.java,update()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值