参考:

来自陈显的博客 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()开始.

更多相关文章

  1. Android(安卓)Application 和Webview 之间的交互
  2. EventBus的简单用法及介绍
  3. windowIsTranslucent和windowBackground对比
  4. android 4.0 全屏 屏蔽下面的status bar
  5. Android(安卓)提高篇 3 之Activity+Intent
  6. Android(安卓)识别手指个数
  7. android中的service
  8. 【Android】MediaPlayer使用方法简单介绍
  9. Android(安卓)L Settings实现

随机推荐

  1. Android事件流程详解
  2. androidの自定义控件View在Activity中使
  3. Android键盘模式android:windowSoftInput
  4. Android Studio开启虚拟机报错!emulator:
  5. Android ViewPager 取消预加载
  6. Android组件TextView属性
  7. Android开源框架Afinal第一篇——揭开圣
  8. 修改阿拉伯语等语言下的数字显示
  9. adb使用帮助
  10. Android仿微信下拉列表实现