android call 流程,mt call消息流程 android来电流程

41528d3028836879cd698677c3999917.gifmt call消息流程 android来电流程

1、 RIL.java Receiver RIL 收到 RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED 消息,通过 RegistrantList 通知 GsmCallTracker 通话状态发生变化 2、 GsmCallTracker.java --- EVENT_CALL_STATE_CHANGE GsmCallTracker 在收到 EVENT_CALL_STATE_CHANGE 消息以后,会调用 RIL 的 getCurrentCalls(),向 Modem 轮询当前的通话情况。 3、 GsmCallTracker.java --- EVENT_POLL_CALLS_RESULT 查询完成以后,Modem 通过 EVENT_POLL_CALLS_RESULT 消息通知 GsmCallTracker 查询 结果。 4、 GsmCallTracker.java --- EVENT_POLL_CALLS_RESULT 如果是最近一个查询所得的结果,则处理之(在 handlePollCalls() 函数中) 。 handlePollCalls()处理逻辑: 5、 CallManager.java --- EVENT_NEW_RINGING_CONNECTION CallManager 进一步通过 PHONE_NEW_RINGING_CONNECTION 消息通知 CallNotifier 对象。 6、 CallNotifier.java --- PHONE_NEW_RINGING_CONNECTION CallNotifier 收到 PHONE_NEW_RINGING_CONNECTION 消息以后,通过函数 onNewRingingConnection()来处理该消息。 onNewRingingConnection()处理逻辑见下图: 1 、…………………………………. 一堆逻辑…………………………………. 2 、如果有新的来电,则通过 GsmCallTracker 对应的 Phone 对象通 过异步消息 EVENT_NEW_RINGING_CONNECTION 来通知 CallManager 对象1、如果需要忽略所有来电,则直接挂断电话 2、异常处理(Connection 为空,或者状态不正确) 3、如果不是 Waiting Connection,则执行 startIncomingCallQuery,查询铃声信息 4、如果是 Waiting Connection ,则直接显示来电界面。 5、查询铃声结束或者查询铃声超时,都会调用 onCustomRingQueryComplete(),在此函数中播放来电铃声,调用 showIncomingCall()显示来电界面。 6、showIncomingCall()会调用 PhoneApp 的 NotificationManager 的 updateNotificationAndLaunchIncomingCallUi()来显示来电通知和来 电界面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值