`
xinanadu
  • 浏览: 234334 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 源码 来电流程 详解

 
阅读更多

参考: 

   来自陈显的博客 http://www.cnblogs.com/chenxian/

    下面是响铃之后到接听的流程

    首先,加入是通过Touch接听

    通过Touch,首先触发的是InCallTouchUi类,当移到接听位置后,由于InCallScreen实现了OnTouchListener,

    所以将会出发InCallScreen的handleOnscreenButtonClick事件。里面将会执行internalAnswerCall()方法。

    该方法又会调用PhoneUtils类的answerCall()方法,该方法里首先让Ringer将响铃停止,stopRing(),然后再

    接听电话。

    状态改变后InCallScreen将会接受到Message,调用OnPhoneStateChage()方法

    然后更行界面。。。

    完成接听电话功能。

参考: 

来自陈显的博客 http://www.cnblogs.com/chenxian/

***************************CallNotifier***************************

本类extends Handler并且implements CallerInfoAsyncQuery.OnQueryCompleteListener

   电话状态改变之后本类会接到Message,然后本Handler通过Message的不同,进入不同的case:

   然后调用不同的方法处理各种状态改变。

   同时实现了OnQueryCompleteListener接口,当来电的时候会帮助执行查询操作,比如查询并调用

   Ringer设置响铃方式。

当来电时,本类会接受到一个PHONE_NEW_RINGING_CONNECTION(Message.what),然后调用对应的方法

   onNewRingingConnection(),该方法又会调用startIncomingCallQuery()方法,该方法就查询用户

  设置的铃声(可能是系统的,也可能是用户自定义的),如果查询完成则直接调用onQueryComplete().

   假如执行超时的话,将会发送一个延时Message,延时后将默认调用系统的铃声。

   假如在延时发送Message过程中Query已经完成,由于CallNotifier实现了OnQueryCopleteListener,

   就会自动调用onQueryComplete()方法,该方法将会首先把可能存在的延时Message给Remove,以防止

   再次设置铃声。接着调用onCustomRingQueryComplete()方法。然后该方法里面会调用Ringer的ring()

   方法启动响铃。

********************************Ringer***************************

Ringer的ring()方法会启动相应的响铃方式。

响铃之后将会又Message发送,其内容为PHONE_STATE_CHANGED

*******************************InCallScreen**********************

InCallScreen将会接受到发送的PHONE_STATE_CHANGED消息,然后调用onPhoneStateChanged()方法

该方法将更新屏幕,CallNotifier的onCustomRingQueryComplete里也会通过PhoneUtils.showIncomingCallUi()

来启动InCallScreen屏幕。然后由InCallScreen处理,处理方式与前面打电话的大体一致,不过该类第一次调用时执行了

onCreate()方法,但是以后执行都是从onNewIntent()开始.

分享到:
评论

相关推荐

    安卓Android源码——Phone.rar

    【Android 源码分析——Phone模块详解】 在Android系统中,Phone模块是核心组件之一,它负责处理手机相关的通信功能,包括拨打电话、接收来电、短信服务等。深入理解Phone模块的源码有助于开发者更好地定制系统服务...

    Android项目源码支持android5.0的通讯录项目

    《Android项目源码支持android5.0的通讯录详解》 在移动设备上,通讯录作为用户日常使用的重要功能之一,其开发与优化一直是Android应用开发者关注的重点。本项目源码针对Android 5.0(Lollipop)系统,提供了一个...

    安卓Andriod源码——-Sip2Peer-1.0实现p2p.zip

    3. **Android源码解析**:Sip2Peer的源码结构清晰,便于学习。主要包含以下几个部分: - **Activity**:应用程序的主要界面,处理用户交互,如拨号、接听等。 - **Service**:后台运行的服务,负责SIP会话的建立、...

    linphone 2.0源码

    **linphone 2.0 源码详解** Linphone是一款开源的VoIP(Voice over IP)软件,它允许用户通过互联网进行音频和视频通话。 Linphone 2.0 版本是该项目的一个重要里程碑,提供了许多改进和新功能,以适应不断发展的...

    Android中级教程

    #### 十五、Android输入系统之输入路径详解 - **输入路径分析**:深入解析了从物理设备接收输入信号到最终处理这一过程中的各个步骤。 - **事件处理流程**:详细介绍了输入事件的处理流程,包括事件的捕获、分发和...

Global site tag (gtag.js) - Google Analytics