`
love19820823
  • 浏览: 931722 次
文章分类
社区版块
存档分类
最新评论

Android 挂断电话流程

 
阅读更多

今天试图解决android挂断电话没有响应的一个bug,跟踪了一下Android 挂断电话流程,在此做个记录


有电话打入是RIL会通知CallNotifier,CallNotifier会调用InCallScreen,这些不再我们今天讨论的范围内,简单提一下。

CallNotifier会调用InCallScreen 代码


然后InCallScreen会显示InCallTouchUI ,InCallTouchUI 就是可以拖动接听和挂断的那个界面 ,这个页面持有一个SlidingTab控件,这个就是可以左右拖动的控件了。

InCallTouchUI实现了SlidingTab.OnTriggerListener, 在该监听者的OnTrigge方法里面处理接听和挂断的动作,代码如下


InCallScreen的 handleOnscreenButtonClick方法


然后调用PhoneUtils.hangupRingingCall(mCM.getFirstActiveRingingCall()); 方法





然后进入 GsmCall


然后进入frameworks/base/telephony/java/com/android/internal/telephony/gsm/GsmCallTracker.java

可以看到很多不同情况下挂断电话的处理,我们只看第一种情况hangupWaitingOrBackground




下面进入RIL java, 向rild 发请求了


再往下就是 rild , 厂商refence ril工作了 ,其实就是发AT命令,这部分每个厂商可能有自己的实现,就不细说了 。


总之,android的挂断电话流程还是挺复杂的,中间要处理很多不同的情景。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics