Telephony
文章平均质量分 88
工程师阿杜
拓荒人
展开
-
Framework中的TelephonyRegistry(原)
一、概述 这是一个系统服务,主要完成两方面的通知任务: 1、监听Phone状态,当有新的状态时,对注册该服务的客户端进行通知。比如: notifyCallState:通知通话状态的改变。 notifySignalStrength:通知信号的改变。 notifyC原创 2013-09-30 13:13:22 · 6000 阅读 · 3 评论 -
Telephony之进程与实体(原)
一、Telephony进程 整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。而这个进程是在packages\services\Telephony模块中被创建的(Android4.4平台)。并且该模块在AndroidManifest.xml中有如下关键的声明: android:pe原创 2014-10-17 11:29:22 · 4340 阅读 · 0 评论 -
Telephony之PhoneInterfaceManager(原)
一、概述 PhoneInterfaceManager是一个Service,在被创建时通过ServiceManager注册自己,他作为Telephony对外的接口,可以接受其他进程向Telephony的请求,我们通过该Service所继承的AIDL文件就能看到他所提供的具体功能:原创 2014-10-20 09:34:39 · 6962 阅读 · 2 评论 -
Telephony之TelephonyManager(原)
Telephony之TelephonyManager一、TelephonyManager概述 TelephonyManager主要提供Telephony相关实务的处理能力,我们从他所提供的public方法来总览一下其所能提供的功能:原创 2014-10-20 09:49:29 · 6431 阅读 · 1 评论 -
Telephoney框架总结(原)
Telephony框架概述 无论手机发展到如何智能的程度,最关键和重要的功能仍然是通讯,具体来说就是打电话、发短信、上网功能的使用。而整个Android通讯的框架从下往上可以分为4个层次: 1、Modem ----这是整个通讯的硬件基础,需要Modem芯片,不同制式需要采用不同的Modem; 2、RIL ----为了适配不同的Modem芯片而抽象出来的原创 2014-10-17 11:20:02 · 4982 阅读 · 0 评论 -
Android短信发送流程之普通短信发送(原)
我们先来看最简单的流程入手分析,即收件人只有一个,而且不是长短信的情况。一、地址有效性检测 当点击发送按钮时,触发onClick事件: @ComposeMessageActivity.java public void onClick(View v) { if ((v == mSendButtonSms原创 2015-12-12 08:25:59 · 7296 阅读 · 1 评论 -
Android运营商名称显示(原)
Android运营商名称的显示对用户来讲可能很少人注意到,但是对Telecomm的开发者来说,却有着不少的学问,虽然3GPP里面已经有明确的显示规则,但是在项目开发中却总能遇到各种特殊的运营商需求。在接下来的几节中我们就来对这个小小的字串显示进行分析。 Android平台的运营商名称主要显示在以下几个位置:1、锁屏时的状态栏,如图: 2、解锁后的下拉通知栏,原创 2016-02-17 19:41:07 · 6995 阅读 · 0 评论 -
Android运营商名称显示之PLMN的读取(原)
Plmn的全称是Public Land Mobile Network(公共陆地移动网络),而在运营商显示方面主要是指当前SIM所驻留的网络,比如当中国移动的SIM(46000)如果漫游到联通的网络(46001),那么虽然当前的SIM是中国移动,但是他的Plmn就应该是中国联通。 也就是说,Plmn的名称与当前驻留的网络相关。 那么Plmn的来源是什么呢?原创 2016-02-17 19:50:50 · 18618 阅读 · 2 评论 -
Android运营商名称显示之SPN的读取(原)
SPN(Service Provider Name)就是当前发行SIM卡的运营商的名称,可以从以下两个路径获取: 1、从SIM文件系统读取 2、从配置文件读取 我们本节就来分析该字串的读取过程。一、从SIM读取SPN过程 一般来说,SIM上保存有当前SIM的发行运营商名称,也就是SPN,该字串可以存储在SI原创 2016-02-17 20:01:05 · 17019 阅读 · 0 评论 -
Android运营商名称显示之PLMN与SPN显示规则(原)
前面的两节分别介绍了PLMN和SPN的读取方法,那么在锁屏、状态栏、通知栏这些地方的运营商名称究竟是来自于PLMN呢?还是来自于SPN呢? 在3GPP中规定的运营商名称显示规则如下: 1、名称可以为SPN或PLMN 2、如果没有SPN文件,那么就显示PLMN 3、若有SPN,并且注册的PLMN是HPLMN或者注册的PLMN在S原创 2016-02-17 20:06:04 · 12268 阅读 · 2 评论 -
Telephony之TelephonyRegistry(原)
一、TelephonyRegistry概述 TelephonyRegistry的作用是检测当前Radio的状态,包括通话、短信、数据连接等状态,当这些状态发生改变时,通知所有向他注册过的客户端。也就是说,他负责Radio状态的通知。 本质上来讲,TelephonyRegistry是一个Service,在开机时通过SystemServer添加到ServiceMan原创 2014-10-17 17:37:36 · 4243 阅读 · 2 评论 -
Telephony之GsmCallTracker(原)
在前一篇《Telephony之进程与实体》中我们分析了,Application如果要发起通话相关的动作,可以通过Telephony的实体对象,也就是Phone对象来发起请求,而Phone对象就会通话相关的请求通过GsmCallTracker转发给RILJ,然后传递给Modem。 所以,GsmCallTracker是Phone对象和RILJ之间通话相关事务的接力者。一、GsmC原创 2014-10-17 15:56:59 · 3584 阅读 · 1 评论 -
Android拨号搜索机制源码分析(原)
本文主要介绍Android4.4拨号界面的联系人搜索机制。 拨号搜索机制分为两个部分,引导搜索和搜索。其中引导搜索是指,从用户输入到开始搜索之间的流程,而搜索部分是指,从数据库搜索字符串的过程。一、引导搜索部分 默认的拨号界面的布局从上到下主要分为3个部分:显示列表、数字编辑框、拨号键盘。他们的作用是:用户直接在拨号键盘上输入数字,然后数字编辑框显示所输入的原创 2014-10-13 14:24:59 · 10158 阅读 · 7 评论 -
Android呼出电话流程(原)
我们从按下拨号开始分析呼出电话的流程。此流程从拨号盘分析到RIL层。一、应用层的流程1.1、拨号盘初步处理 @DialpadFragment.java public void dialButtonPressed() { //得到号码 final String number = mDigits.getText().toString()原创 2013-10-01 11:38:40 · 11032 阅读 · 7 评论 -
Android短信接收过程源码分析(原)
本文主要讨论RILJ接收到一条普通短消息时是如何把它转换成Broadcast发送到系统中的。一、GsmSMSDispatcher注册监听过程 在《Framework层中的RIL》一文中我们介绍过,Framework与应用层中的Phone对象其实就是用GSMPhone对象生成的PhoneProxy对象(CDMA制式不谈)。可以简单的理解为Phone就是GSMPhone对原创 2013-10-14 10:53:23 · 6613 阅读 · 1 评论 -
Uicc之UiccCard(原)
UiccCard本身并不实现具体的功能,只是作为间接接口向UiccController提供UiccCardApplication对象和完成CatService的创建工作,以及当SIM卡被插入或者拔出时弹出提示框是否需要重启设备。一、UiccCard的主要功能 我们从UiccCard提供的主要方法来看其功能。 public boolean isApplicatio原创 2014-08-01 17:47:52 · 3094 阅读 · 0 评论 -
Uicc之UiccCardApplication(原)
UiccCardApplication所担任的任务主要包括创建并向外提供IccFileHandler、IccRecords对象、提供对SIM卡状态的监听等。一、UiccCardApplication的主要功能 我们从UiccCardApplication提供的public方法来查看其提供的主要功能。原创 2014-08-02 14:42:36 · 3623 阅读 · 1 评论 -
Uicc之IccFileHandler(原)
SIM卡的本质是一个文件系统,并且具备不同的分区,而IccFileHandler主要用于从SIM卡读取相应分区的数据。一、IccFileHandler的功能 我们来看其提供的public方法有哪些: public void loadEFLinearFixed(int fileid, int recordNum, Message onLoaded) {}原创 2014-08-04 19:34:08 · 3378 阅读 · 0 评论 -
Uicc之IccRecords(原)
与IccFileHandler类似,UiccCardApplication也会根据当前SIM卡的类型创建不同的IccRecords对象,这个对象与IccFileHandler的区别在于,IccFileHandler是以SIM文件系统为操作对象,而IccRecords是以SIM存储内容为操作对象(IccFileHandler偏重底层实现,IccRecords偏重上层应用)。 下面是原创 2014-08-05 19:22:40 · 6679 阅读 · 0 评论 -
Uicc之CatService(原)
CatService主要负责STK菜单的相关事宜,本节我们就来分析该对象。一、CatService的创建过程 在前面第二节中我们分析过,在UiccCard的更新过程中,会初始化CatService对象:原创 2014-08-06 19:32:49 · 5796 阅读 · 4 评论 -
Uicc之UiccController(原)
UiccController是整个UICC事务处理的入口,负责对外提供IccRecords、IccFileHandler、UiccCardApplication等对象,并完成整个UICC系统的初始化工作。 一、UiccController提供的主要功能 我们通过其提供的public方法来看他的主要功能:原创 2014-07-31 19:44:14 · 3873 阅读 · 1 评论 -
Android拨号盘列表加载机制(原)
本文档主要介绍Android4.4默认拨号盘界面的列表加载机制。一、拨号列表界面概述 从DialtactsActivity所加载的布局中可以看出,在拨号界面的显示列表位置,复用了三个Fragment:PhoneFavoriteFragment、SmartDialSearchFragment和RegularSearchFragment,后两个Fragment是在界面处于搜索状态原创 2014-10-22 09:56:21 · 6823 阅读 · 4 评论 -
高通平台ModemBindingPolicyHandler和ModemBindingPolicyHandler作用(原)
做高通平台双卡项目的时候,高通在Telephony模块中添加了ModemBindingPolicyHandler和ModemStackController两个对象,今天我们来看一下他们的作用。由于这两个对象都是高通自己添加的,因此不方便贴出太多的源码,我们简要看一下其作用和原理。 高通之所以在AP侧添加这两个对象,是和其双卡的协议栈结构相关的。 我们知道虽然双卡原创 2016-02-19 16:46:09 · 1934 阅读 · 0 评论