`
xinanadu
  • 浏览: 234226 次
  • 性别: 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源码目录结构详解

    最全的Android源码目录结构详解,介绍android系统结构组成

    Android_源码目录结构详解

    Android_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解 Android_源码目录结构详解

    android Launcher源码详解

    Android Launcher 源码详解 Android Launcher 是 Android 系统中一个非常重要的组件,负责显示桌面程序和管理应用程序图标。了解 Launcher 的源码可以帮助我们更好地理解 Android 系统的设计思想和实现机制。本文...

    Android系统定制之Android.mk和Android.bp语法详解(精通版).mp4

    2.Android.mk和Android.bp语法大全及使用方法详解 3.Android.mk或Android.bp中引用Android的第三方(jar、aar、so)、Androidx的类库等的使用方法 4.Android.mk或Android.bp编译生成Apk、静态库、动态库、可执行文件等...

    Android蓝牙 上层(java-framework)层bond绑定配对流程图,将Android 源码使用流程图的形式画了出来

    Android蓝牙 上层(java-framework)层打开使能流程图,将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据收发走向,代码流程更加形象生动,能够很快的熟悉Android 蓝牙源码,利于后面问题...

    android网络开发与应用实战详解源码

    《Android网络开发与应用实战详解》一书深入浅出地介绍了Android系统中如何实现网络通信,并提供了丰富的源码示例。这本书涵盖的内容广泛,包括基础的HTTP请求、数据解析、网络状态管理以及高级的WebSocket通信和...

    Android源码编译流程.pdf

    《Android源码编译流程详解》 Android系统作为全球最广泛使用的移动操作系统,其源码编译流程对于开发者而言至关重要。本文将详细解析Android源码的编译过程,包括环境搭建、编译命令以及相关工具的使用,帮助读者...

    android源码目录结构

    "Android 源码目录结构详解" Android 源码目录结构是 Android 操作系统的核心组成部分,了解 Android 源码目录结构是学习和开发 Android 应用程序的基础。本文将详细介绍 Android 源码目录结构,涵盖了 Android 2.1...

    《Android 3D游戏开发技术详解与典型案例》各章节源码

     《Android3D游戏开发技术详解与典型案例》主要以Android平台下3D游戏的开发为主题,并结合真实的案例向读者详细介绍了OpenGL ES的基础知识及3D游戏程序开发的整个流程。  全书分为两篇共22章,第一篇以简单易懂的...

    Android应用开发详解 及源码

    总之,《Android应用开发详解》是一本覆盖全面、实践性强的教程,结合配套源码,无论是初学者还是有一定经验的开发者,都能从中获益良多,提升自己的Android开发技能。通过对书中知识点的深入学习和实践,你将能够...

    Android应用开发详解-附源码

    通过分析和运行这些源码,读者可以更直观地理解Android应用的开发流程,提高实际操作能力。 总的来说,《Android应用开发详解》是一本全面且实用的教程,它涵盖了Android开发的各个方面,从基础到高级,从理论到...

    《Android 3D游戏开发技术详解与典型案例》附源码

    《Android 3D游戏开发技术详解与典型案例》本书主要以Android平台下3D游戏的开发为主题,并结合真实的案例向读者详细介绍了OpenGL ES的基础知识及3D游戏程序开发的整个流程。 全书分为两篇共22章,第一篇以简单易懂...

    Android应用开发详解教材源码(下册)

    《Android应用开发详解教材源码(下册)》是一本深度剖析Android应用开发的实践教程,包含8个单元,涵盖了30多个实例源码。这些实例旨在帮助读者深入理解Android平台上的应用程序设计与实现,从基础到高级,全方位地...

    《Android应用开发详解》源码(全章节)

    这些只是Android应用开发的部分知识点,通过《Android应用开发详解》的源码学习,你可以深入理解每个概念的实际应用,同时还能看到作者如何解决实际问题,提升自己的编程技巧。在实践中不断探索和学习,才能真正成为...

    Android源码设计模式解析与实战.pdf

    《Android 源码设计模式解析与实战》不仅分析了Android源代码的设计模式,更结合实例演示了如何使用这些设计模式。看这本书,既能学到如何分析、学习Android源代码,又能提高自己架构设计水平 《Android 源码设计...

    Android 蓝牙 HCI数据收发流程图,host将指令发送给controller,将Android 源码使用流程图的形式画了

    Android 蓝牙 HCI数据收发流程图,host将指令发送给controller,将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据收发走向,代码流程更加形象生动,能够很快的熟悉Android 蓝牙源码,利于...

    Android应用开发详解(包括源码)

    本资源“Android应用开发详解(包括源码)”正是为了满足这样的需求,它提供了一整套关于Android应用开发的详细指南,并且包含了实际的源代码,帮助开发者从实践中学习。 首先,Android应用开发基于Java语言,尽管...

    Android 蓝牙服务发现SDP协议初始化、连接等源码流程图,非常详细的从btif-bta-btm-hci 数据流程走向,以及

    Android 蓝牙服务发现SDP协议初始化、连接等源码流程图,非常详细的从btif-bta-btm-hci 数据流程走向,以及从controller收到数据到btm层,将Android 源码使用流程图的形式画了出来,使Android 蓝牙开发者更清楚数据...

    android应用开发详解 源码(全2-18)

    这个压缩包"android应用开发详解 源码(全2-18)"包含了从基础到实践的全面学习资料,总计17个章节的源代码。这些章节涵盖了Android应用开发的各个方面,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先...

Global site tag (gtag.js) - Google Analytics