前言:
电话管理是Android 系统支持的重要的业务之一,提供接听电话,收发短信、电话薄、网络事件监听、
读取用户信息、2G/3G/4G信号切换等功能。由上到下分为4层, PHONE应用层,Telephony框架实现层,
RIL层。本文基于android 5.1,架构图如下,
整个框架的调用流程图如下,
整个网络虽然涉及到的进程也比较多,但是仔细分析起来关键点没有多少。本文的关键点在于Framework的几个进程,
上层的应用以及第三方有关phone的应用都是通过TelephonyManager这个API接口和phone进程进行binder通信,
当然手机中有部分操作本身就运行于phone进程中。
Phone进程一方面通过RIL.java文件利用socket和hardware中的rild守护进程进行通信;另外一方面通过
NetworkAgent利用AsyncChannel和systemerver进程的ConnectivityService服务进行通信,管理网络连接等等。
与此同时, systemerver进程还通过socket机制和netd守护进程完成网络的相关操作等等。
在整个android系统中,phone模块需要处理很多事务,例如电话的接听/来去电,短信的收发等等,但是本文主要论述
Framework层的Phone服务进程有关2G/3G/4G信号切换流程。
1, Phone服务进程
Phone服务进程 (包名com.android.phone,以下简称phone进程)主要代码位于以下目录中,