自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 VoLTE协议

VoLTE协议栈从无线角度来看:VoLTE需要建立的承载要实现语音或视频业务需要UE同时建立三个数据承载外,还需要UE建立RRC链接信令承载:SRB1和SRB2。VoLTE用户注册:VoLTE用户在体验高质量通话之前,必须先进行VoLTE的注册流程,从无线角度来看,注册分为两个步骤:(1)LTE无线的无线注册: 由于VoLTE实质上对于无线来说只是一...

2019-06-12 17:12:56 2379

原创 手机modem开发之VoLTE信令

1、volte主叫流程VOLTE主叫信令解析: 对关键流程解释:INVITE 主叫发INVITE消息,触发主叫RRC建立过程,INVITE消息中包含被叫方的号码,主叫方支持的媒体类型和编码等。Service RequestRRC Connection RequestRRC Connection SetupRRC Connection Setup Complete...

2019-06-12 11:34:50 1123

转载 Android N 通话界面_CallButtonFragment

本流程图基于MTK平台 Android 7.0,普通来电,本流程只作为沟通学习使用前面介绍了一下 来电界面 的一些信息,接下来我们继续分析,看看通话界面中的 CallButtonFragment 的功能和作用。相关类图说明:BaseFragment 是 incallUI 中所有 fragment 的基类,这个类里面主要是调用了相关presenter的一些UI相关的方

2017-07-12 17:37:36 920

转载 CallAudioManager 是如何工作的

CallAudioManager是干啥的呢?单词分来来写 Call Audio Manager,一个管理通话中音频状态的类。初始化一张图看清CallAudioManager怎么来的 。 在TeleService创建的时候对TelecomGlobals进行初始化,然后new出一个CallsManager,在CallsManager.Java的构造函数中new出一个CallAudi

2017-07-12 17:09:40 1162

原创 通话中切换扬声器流程

切换流程将从这里的onclick事件开始分析:回头CallButtonFragment    public void onClick(View view) {        int id = view.getId();        int mode = AudioState.ROUTE_WIRED_OR_EARPIECE;        Log.d(this, "onClick(

2017-07-12 17:07:23 900

转载 来电铃声和通话中的提示音

InCallTonePlayerpackages/services/Telecomm/src/com/Android/server/telecom/InCallTonePlayer.Java,该类用于通话中提示音的播放。[java] view plain copy public static class Factory {       private fin

2017-07-12 17:05:49 1582 1

转载 Android GC 原理探究

导语想写一篇关于 android GC 的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的 GC 导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和 GC 的原理,为什么会不断的 GC,GC ALLOC 和 GC COCURRENT 有什么区别,能不能想办法扩大堆内存减少 GC 的频次等等。1、JVM 内存回收机制1.1 回收算法标记回收算法(Mar

2017-04-28 10:19:25 501

转载 java8之新特性介绍(java 8 new features)

Java 8 new features with Examplehttps://www.youtube.com/playlist?list=PLsyeobzWxl7qbvNnJKjYbkTLn2w3eRy1Q一、可以在接口中写方法体   在接口中增加新方法时,可以带方法体。   带来的好处:   当新接口发布时,以前实现该接口的类,无需改动。   即:无需实现新

2017-04-13 14:31:41 902

转载 Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/guide/topics/ui/actionbar.html限于篇幅的原因,在上篇文章中我们只学习了ActionBar基础部分的知识,那么本篇文章我们将接着上一章的内容继续学习,探究一下ActionBar更加高级的知识。如果

2017-03-16 11:31:42 682

转载 Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/guide/topics/ui/actionbar.htmlAction Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功

2017-03-16 11:30:19 383

原创 Android页面返回上一级的三种方式

一. 首先如果是自己布置一个back的按钮或图片   这个很简单,当然就要自己写回退实现的逻辑,例如back的id为R.id.back,在onClick方法中,switch case中调用finish方法,case R.id.back: finish();back(); 二. 使用系统提供的Action Bar       Action Bar是一种新増的导航栏功能,在Androi

2017-03-16 11:12:32 18456 1

原创 Handler内存泄漏简析

在Android开发过程中,我们可能会遇到过令人奔溃的OOM异常,面对这样的异常我们是既熟悉又深恶痛绝的,因为造成OOM的原因有很多种情况,如加载图片过大,某已不再使用的类未被GC及时回收等等......本篇我们就来分析其中一种造成OOM的场景,Handler引起的内存泄漏。本篇分为3部分:1.Handler内存泄漏例子说明以及原理阐明2.问题验证(如果感觉繁琐请直接跳过)

2017-03-01 14:09:06 402

转载 HandlerThread使用实例

本篇我们将来给大家介绍HandlerThread这个类,以前我们在使用线程执行一个耗时任务时总会new一个Thread的线程去跑,当任务执行完后,线程就会自动被销毁掉,如果又由新的任务,我们又得新建线程.....我们假设这样的一个情景,我们通过listview去加载图文列表,当我们往下滑动时,这时需要不断去请求网络资源,也就是需要不断开线程去加载网络资源,如果每次都new一个Thread,这显然是

2017-03-01 13:33:26 258

转载 Telephony之PhoneInterfaceManager

一、概述        PhoneInterfaceManager是一个Service,在被创建时通过ServiceManager注册自己,他作为Telephony对外的接口,可以接受其他进程向Telephony的请求,我们通过该Service所继承的AIDL文件就能看到他所提供的具体功能:[java] view plain copy @ITelepho

2017-02-24 19:41:35 450

转载 Telephony之TelephonyRegistry

一、TelephonyRegistry概述        TelephonyRegistry的作用是检测当前Radio的状态,包括通话、短信、数据连接等状态,当这些状态发生改变时,通知所有向他注册过的客户端。也就是说,他负责Radio状态的通知。        本质上来讲,TelephonyRegistry是一个Service,在开机时通过SystemServer添加到Servic

2017-02-24 19:32:11 728

转载 Android--多用户模式

Android中的多用户与Windows的多用户类似,可以支持多个用户使用系统。通常,第一个在系统中注册的用户将默认成为系统管理员。不同用户的设置各不相同,并且不同用户安装的应用及应用数据也不相同。但是系统中和硬件相关的设置则是共用的,例如网络设置等。Android与Windows不同,用户切换后前面用户运行的后台进程还可以继续运行。这样,进行用户切换时无须中断一些后台进行的耗时操作(如下

2017-02-24 11:25:02 19015 3

原创 android源码探索----多用户下phone进程问题

android4.2增加了多用户功能,终于在迟迟之后与Linux保持了一致。但是手机上的多用户其实是相当鸡肋的,试想手机这种移动设备基本上就是每一个人的唯一id,所以基本上不存在多用户共用设备的情况。也正因为此以及专利的原因,所以电话上的多用户功能是关闭的,只有平板上的多用户是打开的。但还是要感谢谷歌开发人员引入多用户机制,这样可以帮助开发一些安全系统有极大帮助。    但打开多用户之后,有一

2017-02-24 11:20:11 1193 1

转载 Telephony之GsmCallTracker

在前一篇《Telephony之进程与实体》中我们分析了,Application如果要发起通话相关的动作,可以通过Telephony的实体对象,也就是Phone对象来发起请求,而Phone对象就会通话相关的请求通过GsmCallTracker转发给RILJ,然后传递给Modem。        所以,GsmCallTracker是Phone对象和RILJ之间通话相关事务的接力者。一、

2017-02-21 20:25:08 794

转载 Telephony之进程与实体

一、Telephony进程        整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。而这个进程是在packages\services\Telephony模块中被创建的(Android4.4平台)。并且该模块在AndroidManifest.xml中有如下关键的声明:[html] view pl

2017-02-21 17:42:59 427

转载 Telephoney框架总结

无论手机发展到如何智能的程度,最关键和重要的功能仍然是通讯,具体来说就是打电话、发短信、上网功能的使用。而整个Android通讯的框架从下往上可以分为4个层次:        1、Modem    ----这是整个通讯的硬件基础,需要Modem芯片,不同制式需要采用不同的Modem;        2、RIL      ----为了适配不同的Modem芯片而抽象出来的中间层,用于将Mode

2017-02-21 17:33:36 837

转载 Telephony之PhoneInterfaceManager

一、概述        PhoneInterfaceManager是一个Service,在被创建时通过ServiceManager注册自己,他作为Telephony对外的接口,可以接受其他进程向Telephony的请求,我们通过该Service所继承的AIDL文件就能看到他所提供的具体功能:[java] view plain copy @ITelepho

2017-02-21 17:29:14 863 2

转载 Framework中的TelephonyManager

一、TelephonyManager的作用        我们先来谈谈TelephonyManager的作用。        对于这个问题,我们看TelephonyManager提供的几个重要接口就可以知道:[java] view plain copy //得到软件版本  getDeviceSoftwareVersion()  //得到设备的ID,I

2017-02-16 19:53:39 1017

转载 Framework中的TelephonyRegistry

一、概述        这是一个系统服务,主要完成两方面的通知任务:        1、监听Phone状态,当有新的状态时,对注册该服务的客户端进行通知。比如:                notifyCallState:通知通话状态的改变。                notifySignalStrength:通知信号的改变。                notifyC

2017-02-16 19:30:18 561

转载 Android onTouch()和onTouchEvent()区别

1、onTouch()方法:  onTouch方式是View的OnTouchListener接口中定义的方法。  当一个View绑定了OnTouchListener后,当有Touch事件触发时,就会调用onTouch方法。  (当把手放到View上后,onTouch方法被一遍一遍的调用) 2、onTouchEvent()方法:  onTouchEvent方法时重载的Acti

2017-02-15 19:27:38 1103

转载 Android源码编译GC overhead limit exceeded. Try increasing heap size with java option '-Xmx<size>'

现在编译源码已经成了家常便饭了,基本上定期对公司每个项目的主线代码进行同步,然后晚上下班前开启编译,防止有的问题单别人已经修改了,自己还在这花时间修改,但是这两天真是奇怪,同一套编译环境,amber、s2、x10其他几个项目都是好好的,唯独x3项目每次编译都不通过,报的错误基本都一样:GC overhead limit exceededTry increasing heap size with

2017-02-10 13:56:37 3196

转载 SIM卡询问框是如何弹出的?

本篇解决两个问题 * SIM卡询问是如何开启的? * 通话中再添加通话为何不会再次弹出SIM卡询问框PS:只考虑SIM卡账户的情况,不考虑有其他账户(sip等)的情况。SIM卡询问是如何开启的?SIM卡询问框弹出的条件我们知道SIM卡是在SelecPhoneAccountDialogFragment.Java中new出来并显示的,那么是如何走到这一步的呢?跟踪拨打电

2017-01-22 16:11:53 1366

转载 网络连接评分机制之再谈WIFI与数据切换过程

前面几节介绍了网络评分机制的运行流程,下面我们再次通过案例来梳理一下评分机制在使用过程中的体现。        用户原本在用数据上网,但是如果到了一个有WIFI的环境,并连接上了WIFI,此时用户的手机将会自动断开数据网络,这是如何做到的呢?        当用户来到WIFI环境时,如果连上了某个WIFI,那么此时的WIFI状态机将会进入L2ConnectedState状态,然后会更新当前

2016-12-17 14:16:21 475

转载 网络连接评分机制之NetworkMonitor

本节介绍一个比较特殊的流程,就是网络可用性对评分的影响。        该影响主要体现在,当一个网络连接建立时,系统将用该连接Ping一个Google的网站来判断该连接是否真的可以上网,如果不可以,那么就会扣掉该网络40分,从而可能导致该网络的评分低于其他网络评分,下面来看详细过程。一、NetworkMonitor来源        在前面《网络连接评分机制之Netwo

2016-12-17 14:15:25 2972

转载 网络连接评分机制之NetworkAgent

前面介绍了开机过程中各个网络提供者的初始化过程,其实就是创建自己的NetworkFactory,并将其注册到ConnectivityService。而在介绍NetworkFactory的时候,我们看到该类的官方注释中有这么一句描述:[java] view plain copy "A NetworkFactory is an entity that creates N

2016-12-17 14:14:47 682

转载 网络连接评分机制之NetworkFactory

在开机时,各个提供网络连接的对象需要向ConnectivityService注册自己,并把自己所提供的网络的分值告诉ConnectivityService。        为了ConnectivityService便于统一管理,每一个具备提供网络服务的对象都需要创建一个NetworkFactory的子类对象,并利用该对象注册自己,以及提供自己的分值。一、NetworkFactory

2016-12-17 14:14:06 535

转载 连接管理的评分机制介绍

在前一节《Framework中的连接管理机制》中简单介绍了连接管理的大致框架,包括ConnectivityManager、ConnectivityService、NetworkAgent等对象之间的关系以及消息流走向,本节在这些知识的基础上介绍连接管理的核心机制,即连接管理中的评分机制。        Android可以提供数据业务的对象主要有:移动数据网络、WIFI、蓝牙、网线等,这些连接本

2016-12-17 14:13:15 279

转载 Framework中的连接管理机制

上一节《Wifi服务框架介绍》介绍了WIFI的大致框架,本文主要介绍连接管理中的几个重要角色,包括:NetworkInfo、NetworkAgent、ConnectivityService、ConnectivityManager等。        为了便于讨论,本文选取一个具体问题展开分析,那就是:当当前的网络连接变为不可用时,系统如何自动切换其他可用的网络连接的。        我们知道

2016-12-17 14:12:11 441

转载 Wifi服务框架介绍

本文简要介绍WIFI服务的主要框架以及运作机制。        WIFI框架主要涉及到以下几个对象:WifiService、WifiManager、WifiServiceImpl、WifiStateMachine等。下面来介绍这四个对象的内在联系。一、WIFI服务的初始化        WIFI服务的初始化分为两个部分,WifiService的初始化和WifiManag

2016-12-17 14:11:28 456

转载 Android数据业务发起流程

本节我们来介绍手机的数据网络连接建立过程。        所谓数据网络就是使用手机SIM卡上网,该上网方式需要满足两个条件:选择并激活合适的APN参数,PS域已经处于ATTACH状态。        下面我们分四节来分别介绍Android L上数据业务的发起流程。        《数据业务建立流程之DcTracker创建过程》        《数据业务建立流程之常规APN参数的创建

2016-12-17 13:45:54 742

转载 数据业务建立流程之DcTracker创建过程

一、DcTracker介绍        DcTracker是Telephony框架中负责数据业务的核心(类似于GsmCallTracker是通话业务核心,GsmServiceStateTracker是网络CS业务的核心),所有对数据网络的请求(打开关闭数据开关、切换数据卡、修改APN参数等)都会发送到该处理中心来处理。本节所涉及的大部分代码也都在该对象中。下面我们先来看该对象的初始化

2016-12-17 13:45:06 945

转载 数据业务建立流程之常规APN参数的创建

区别于前面的紧急APN,这里的APN参数主要指常规的SIM卡APN参数,手机在上网时必须传递正确的APN参数给运营商才可以接入移动网络,而常规APN参数的创建是由监听器触发的。        前面在DcTracker初始化过程中注册了大量监听器,其中有两个监听器可以触发APN的创建过程:1、SIM载入完毕;2、APN改变。这两个事件所导致的APN创建流程也都是类似的,分别是:       

2016-12-17 13:42:43 898

转载 android 性能优化 -- 启动过程 冷启动 热启动

一、应用的启动方式  通常来说,启动方式分为两种:冷启动和热启动。  1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。  2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程

2016-12-14 10:56:31 1255

转载 android源码编译问题

Jack “Out of memory error”错误日志:Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).GC overhead limit exceeded.Try inc

2016-11-22 16:39:56 1540

转载 SIP学习

分类: 学习 SIP 协议最快捷的方法是通过范例来学习,找到了一个完整的呼叫流程,let's go! INVITE主叫方Tesla首先发起 INVITE消息到被叫方Marconi。INVITE消息包含会话类型和一些呼叫所必须的参数。会话类型可能是单纯的语音,也可能是网络会议所用的多媒体视频,还可能是游戏会话。下面是消息体范例,我们来详细分析各个字段的意义。

2016-11-03 19:53:43 346

转载 Android7.0 Rild工作流程

一、基于Rild的通信架构一般智能手机的硬件架构都是两个处理器: 一个处理器用来运行操作系统,上面运行应用程序,这个处理器称作Application Processor,简称AP;另一个处理负责和射频无线通信相关的工作,叫Baseband Processor,简称BP。在Android系统中,Rild运行在AP上,它是AP和BP在软件层上通信的中枢。目前通过Rild,AP和BP的通

2016-11-01 17:03:57 1999

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除