Android
月凉西厢
穷且益坚,不坠青云之志
展开
-
Android5.0源码分析—— Zygote进程分析
1 Zygote简介Android的应用程序一般都是由Java语言编写而成的,这样的应用程序需要运行在独自的Dalvik虚拟机之上。但是,如果在每一个进程启动时都在物理内存中创建和初始化一个Dalvik虚拟机,这无疑对系统的性能造成很大的影响。Zygote是Android系统中的一个非常重要的守护进程,所有其他应用程序的Dalvik虚拟机都是通过Zygote孵化出来的。通过这种方式,原创 2015-11-11 17:01:54 · 1028 阅读 · 0 评论 -
Android6.0的SMS(短信)源码分析--短信发送
1 SMS发送流程1.1 SmsManagerAndroid发送短信的接口可以认为是SmsManager,当然并不是所有的App都可以发送短信的,必须配置相关的权限。App中可以通过SmsManager.getDefault()得到SmsManager的单例。首先来SmsManager主要提供的接口有哪些。public static SmsManager原创 2016-03-23 16:10:18 · 10660 阅读 · 3 评论 -
Android6.0的SMS(短信)源码分析--短信接收
1 SMS接收流程Android6.0中对短信的处理比起老版本还是变化有点大的。在分析源代码之前,我们可以先猜测一下Android中接收短信的大致流程。首先根据之前分析phone应用的经验,猜测最先接收到短信消息的肯定是Modem,接着上报的RILJ,RILJ在通知到XXXTracker,之后也许会有个SmsManager的东西作统一管理,再之后就是App层。当然,这仅仅是猜测,到底是原创 2016-03-23 16:02:28 · 9340 阅读 · 0 评论 -
对IccCardStatus 的认识
转自:http://blog.csdn.net/lsdmx2016/article/details/9065895 IccCardStatus 用于描述手机所插入的手机卡的信息,包括卡的状态,PIN码锁定的状态,所包含的应用的状态信息。RIL.java 中获取得到SIM卡的信息后,将信息封装成IccCardStatus返回给UiccController. 具体的成员变量如下转载 2016-02-22 16:38:18 · 1219 阅读 · 0 评论 -
Android中的网络管理源码分析--netd
1 Netd简介Netd是Android的网络守护进程。NetD是个网络管家,封装了复杂的底层各种类型的网络(NAT,PLAN,PPP,SOFTAP,TECHER,ETHO,MDNS等),隔离了底层网络接口的差异,给Framework提供了统一调用接口,简化了网络的使用。NetD主要功能是:第一、接收Framework的网络请求,处理请求,向Framework层反馈处理结果;第二、监原创 2016-02-22 16:28:53 · 4947 阅读 · 0 评论 -
Android6.0的phone应用源码分析(8)——来电(MT)
1.1 TelePhony Framework当有新来电时,最先得到消息的肯定是Modem,接着Modem response到RILD,RILD通过“rild”socket accpet得到的clientsocket将消息上传到RILJ。而在之前分析MO的RILJ时,已经知道存在着两种消息Solicited消息和UnSolicited消息。UnSolicited消息可以基本认定为是底原创 2016-03-07 14:31:03 · 3394 阅读 · 0 评论 -
Android6.0源码分析—— Zygote进程分析(补充)
此博文为《Android5.0源码分析—— Zygote进程分析》的补充我们已经知道Android 5.0已经默认了ART,今天本想回去查看一下这个部分,于是回到init进程中去寻找源码,发现6.0的Zygote部分也小有变动,因此更新一下。首先是init.c变成了init.cpp,这其实也就意味着在init中增加了类的概念。但是仔细查看init.h发现并没有class关键字。只有很多的s原创 2016-03-17 17:17:12 · 1134 阅读 · 0 评论 -
Android6.0的phone应用源码分析(4)——phone拨号流程分析
1.1 Dialer拨号拨打电话需要开启Dialer(拨号盘),当用户触发onClick事件,DialtactsActivity的onClick()方法被触发:public void onClick(View view) { switch (view.getId()) {//对触发的buttonID进行判断 case R.id原创 2015-12-15 16:22:31 · 5903 阅读 · 5 评论 -
Android6.0的phone应用源码分析(7)——RIL层框架分析2
这里再次 将Android6.0的phone应用源码分析(5)总最后的流向图拿出来从图中可以看到RILJ通过RILD向MODEM发送命令后,接受response是通过readerLoop异步进行的(?好像并不是异步,虽然在不同线程,但是加锁了,执行情况和同步基本一样啊)。这就存在一个问题:RILJ怎么识别response对应哪一个request?并且这个response返回给谁?从原创 2016-03-02 15:28:38 · 1037 阅读 · 0 评论 -
Android6.0的phone应用源码分析(6)——RIL层框架分析
通过之前的分析已经知道,RILJ存在着多个循环结构:1、Ril.cpp中的Event_loop负责接收来自RILJ的Request;2、reference_ril.c中的mainLoop主要是维护AT通道的打开状态,在AT通过出现问题时重启AT通道;3、Atchannel.c中的ReaderLoop负责接收Modem上报的ATResponse。如何让这三个循环正确有序的进行是RIL框架的关键。原创 2016-03-02 15:20:57 · 1275 阅读 · 0 评论 -
Android6.0的phone应用源码分析(5)——RIL层分析
1.1 RIL概述由于Android开发者使用的Modem是不一样的,不同方案使用的Modem也不一样,GSM和CDMA就差别更大了,所以各种指令格式,初始化序列都不一样,为了消除这些差别,Android将ril做了一个抽象,使用一个虚拟电话的概念。这个虚拟电话对象就是GSMPhone(CDMAPhone),Phone对象所提供的功能协议,以及对下层支撑环境的要求都有一个统一的描述,这个描原创 2016-01-25 13:39:33 · 3461 阅读 · 0 评论 -
Android6.0的Looper源码分析(1)
1 Looper简介Android在Java标准线程模型的基础上,提供了消息驱动机制,用于多线程之间的通信。而其具体实现就是Looper。Android Looper的实现主要包括了3个概念:Message,MessageQueue,Handler,Looper。其中Message就是表示一个可执行的任务。消息创建完毕通过消息处理器Handler在任意线程中发送添加至Messag原创 2016-02-05 15:15:15 · 1776 阅读 · 1 评论 -
Android6.0的phone应用源码分析(2)——phone相关进程启动分析
1.1 PhoneApp启动PhoneApp进程是在系统开机时启动的,和其他的很多服务应用或Activity一样,它是由AMS在SystemReady后启动的。其AndroidManifest.xml文件中有如下配置: android:persistent="true"//这里的true表示应用是在ActivityManagerSer原创 2015-12-03 09:28:16 · 4831 阅读 · 1 评论 -
Android6.0的phone应用源码分析(1)——智能手机的硬件结构介绍
1 智能手机的硬件结构介绍目前智能手机的硬件基本结构大多采用的是双处理器架构:应用处理器AP和基带处理器BP。其中应用处理器运行开放式操作系统以及操作系统之上的各种应用,负责了整个系统的控制;基带处理器则负责基本的通信功能,主要包括了数字基带芯片DBB和模拟基带ABB,完成语音信号和数字信号的调制解调、信道编码解码和无线Modem控制。智能手机的基本硬件结构图1所示。原创 2015-12-02 13:33:53 · 2035 阅读 · 0 评论 -
Android6.0的phone应用源码分析(3)——phone 拨号UI分析
1.1 原生界面 Phone应用的UI设计直接关系到后面的去来电流程,因此有必要对Phone的UI做一定的介绍。下面是Android6.0的原生拨号界面:1.2 应用界面Phone的UI入口可以认为是DialtactsActivity.java的onCreate()。 @Override protected void onCr原创 2015-12-15 16:11:52 · 2485 阅读 · 1 评论 -
Android6.0的phone应用源码分析(9)——UICC卡管理
这部分严格来说并不属于phone应用,但是考虑到手机卡与phone应用的密切关系,也就放在同一个系列了。1.1 UICC卡的各种状态这些内容一般都被定义在IccCardStatus类中。首先是卡的状态:public enumCardState { CARDSTATE_ABSENT, //表示掉卡 CARDSTATE_PRESENT,原创 2016-03-15 10:20:30 · 2649 阅读 · 0 评论