参考:
来自陈显的博客 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_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解
《Android应用开发详解》源码,完整版,值得看一看。 《Android核心技术和开发详解》各章案例的全部源代码,第一章将要介绍的是Android开发起步的相关知识,首先对Android平台进行简单的介绍,其中包括Android的背景...
"Android创意实例详解书籍源码"是一个宝贵的资源,为学习者提供了丰富的实践素材。本资源包含了一系列Android应用实例的源代码,旨在帮助开发者通过实际操作来探索和学习Android开发的创新方法。 首先,我们要明确...
Android Launcher 源码详解 Android Launcher 是 Android 系统中一个非常重要的组件,负责显示桌面程序和管理应用程序图标。了解 Launcher 的源码可以帮助我们更好地理解 Android 系统的设计思想和实现机制。本文...
Android 蓝牙PBAP协议连接流程图(java-framework层),将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据收发走向,代码流程更加形象生动,能够很快的熟悉Android 蓝牙源码,利于后面问题...
Android蓝牙 上层(java-framework)层打开使能流程图,将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据收发走向,代码流程更加形象生动,能够很快的熟悉Android 蓝牙源码,利于后面问题...
本资源“Android应用开发详解源码全”涵盖了2-18章节的内容,这是一份全面的学习资料,旨在帮助开发者从源码层面探索Android应用开发的奥秘。 首先,我们要了解Android应用的基本架构,它基于Java语言,通过Android...
《Android源码编译流程详解》 Android系统作为全球最广泛使用的移动操作系统,其源码编译流程对于开发者而言至关重要。本文将详细解析Android源码的编译过程,包括环境搭建、编译命令以及相关工具的使用,帮助读者...
《Android源码编译流程详解》 Android源码编译是开发者深入了解系统内核、定制化开发或进行系统级调试的重要步骤。本文将详细介绍Android源码的编译流程,包括必要的环境配置、编译指令以及相关工具的使用。 首先...
"Android 源码目录结构详解" Android 源码目录结构是 Android 操作系统的核心组成部分,了解 Android 源码目录结构是学习和开发 Android 应用程序的基础。本文将详细介绍 Android 源码目录结构,涵盖了 Android 2.1...
### Ubuntu下Android源码下载步骤详解 #### 1. 安装Git Git是一个分布式版本控制系统,用于跟踪对项目源代码的更改。在Ubuntu环境下,可以通过以下命令安装Git: ```bash sudo apt-get install git-core ``` 这一...
总之,《Android应用开发详解》是一本覆盖全面、实践性强的教程,结合配套源码,无论是初学者还是有一定经验的开发者,都能从中获益良多,提升自己的Android开发技能。通过对书中知识点的深入学习和实践,你将能够...
通过分析和运行这些源码,读者可以更直观地理解Android应用的开发流程,提高实际操作能力。 总的来说,《Android应用开发详解》是一本全面且实用的教程,它涵盖了Android开发的各个方面,从基础到高级,从理论到...
《Android核心技术与实例详解源码》是一本专为Android开发者设计的教程,旨在帮助初学者深入理解Android开发的核心概念,并通过实例源码进行实践。这本书的内容涵盖了Android开发的多个重要方面,包括基本组件、UI...
Android 蓝牙协议栈使能enable -init流程图,将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据收发走向,代码流程更加形象生动,能够很快的熟悉Android 蓝牙源码,利于后面问题处理和BUG...
Android应用源码11套安卓源码合集: Android Gps日志记录程序源码.rar Android listview 滑动删除(具体效果360手机卫士后台通知).rar Android MP3播放器,带卡拉OK字幕.rar Android “遇见”android应用源码.rar ...
这个压缩包文件"Android程序研发源码Android 来电拦截及拦截后的提示音源码.zip"包含的源代码提供了实现这两个功能的示例。下面将详细解释如何在Android中实现来电拦截和自定义提示音。 一、来电拦截 1. 权限申请...