自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

泊客

你只需要有点食物,有台便宜的电脑,和与之献身的决心,你即可拥有任何你想要的编程境界。

  • 博客(36)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android 8.0 RIL源码分析(二)

非URC消息处理 之前分析到在at_send_command_full_nolock调用后会先发送消息给modem,然后阻塞当前线程等待modem返回消息。因此也是在readerLoop的消息处理中去唤醒阻塞的线程,而且应该把数据直接返回给阻塞的线程,如之前ndroid 8.0 RIL框架分析,非URC消息会调用processLine方法。1.这里跟进到processLine方法...

2018-02-28 16:39:17 3247

原创 Android 8.0 RIL源码分析(一)

1.去电流程三中跟踪到最后的时候可以看到其调用了RIL的dail方法 这里继续以此分析其从RIL到Modem的流程 @Override public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) { //获取radio对象 IRadio radioP...

2018-02-28 16:14:08 5125 1

原创 Android 8.0 RIL框架分析

前言Android O的版本对RIL的框架的通信功能进行了改动,不在使用sockect进行通讯,而改用HIDL进行通信,这里结合7.0和8.0的源码,分析目前的RIL框架,如有错误还请不吝指正。RIL的入口xref: /hardware/ril/rild/rild.cint main(int argc, char **argv) { //设置服务名,在7.0上是设置...

2018-02-23 20:35:09 8759

原创 Native层的handle机制浅析

本文旨在进一步分析MessageQueue.java中的Native方法 private native static long nativeInit();//初始化 private native static void nativeDestroy(long ptr);//销毁 private native void nativePollOnce(long ptr, int...

2018-03-28 21:29:25 2691

原创 Android源码分析之Handler机制

Handler机制的作用: 1.UI更新 2.消息处理机制,可以用来进行异步通信为何设计Handle机制? 主要是为了解决并发处理的问题, 如果在多个子线程直接更新主线程(UI线程)会导致界面更新混乱,那么如何保证更新同步? 如果引入加锁的话会产生性能下降的问题,故而参考windows消息处理机制,设计了Handle处理。 而使用Handle机制以异步通信的方式进行处理消息,且可以...

2018-03-23 17:55:33 405

原创 LTE注网总体流程-日志分析

LTE入网流程分析,从开机上电搜网到注册到网络的过程 1.插卡开机上电2.小区选择过程 1.搜索NAS请求的PLMN 2.扫描E-UTRA频带中的所有RF信道以找到PLMN(UE可以通过使用存储在采集数据库中的信息来优化该搜索) 3.搜索最强的小区并读取系统信息以确定PLMN 4.确认小区选择标准都满足于小区(S准则) 5.驻扎在选择的小区上2.1 PLMN选择 ...

2018-03-07 10:40:28 14375

原创 LTE注网总体流程

注网流程1. 开机驻留UE开机后在SIM卡初始化还未完成前,会先尝试获取限制服务。获取限制服务后可以支持拨打紧急电话2. 初始化SIM卡从AP侧可以看到SIM卡READ的状态。从modem侧,过滤NAS消息,当SIM卡初始化完成后会发出CM_SIM_AVAILABLE_CNF消息。3. 选择PLMN选择PLMN的时候会从SIM卡中读取,及配置文...

2018-03-06 15:33:40 7407

原创 Android O版本Call对象解析

在Android8.0中的Call.java有三个地方frameworks\opt\telephony\src\java\com\android\internal\telephonytelephoney frameworks frameworks\base\telecomm\java\android\telecomtelecomm frameworkspackages\serv...

2018-03-05 20:26:04 2957

原创 Android 8.0来电流程分析(三)

Telecomm Service 这里我们可以看出CallsManager的管理作用,创建Calls并添加监听,在完成Call的相关初始化后进行进一步处理,其实就是传递消息到别的的地方去。 1.那么继续到CallsManager中跟进 @Override public void onSuccessfulIncomingCall(Call incomingCall) { ...

2018-02-08 15:34:11 5422 2

原创 Android源码分析相关工具

1.在线搜索Android各版本源码的网址 http://androidxref.com/2.SourceInshght4.0 破解版本下载地址: http://download.csdn.net/download/qq_27540925/10231648

2018-02-08 10:03:15 533

原创 Android 8.0来电流程分析(二)

Telephony-Service1.上篇分析到PstnIncommingCallNotifier 中handleMessage处理来电消息,继续跟进分析 switch (msg.what) { case EVENT_NEW_RINGING_CONNECTION: handleNewRingi

2018-02-07 17:39:06 4275 1

原创 Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

2018-02-06 22:03:05 7122 2

原创 Andrdoid HIDL简介

全称: Hardware Interface Definition Language 目的: 使 Android 可以在不重新编译 HAL 的情况下对 Framework 进行 OTA 升级。 基本用法package [email protected]; // 当前package包名import android.hardware.audio.common@2

2018-02-06 20:32:54 2575

原创 Android 8.0本地挂断电话流程分析

1.InCallFragment显示来电界面,跟踪 挂断电话按钮事件 @Override public void onClick(View view) { if (view == endCallButton) { LogUtil.i("InCallFragment.onClick", "end call button clicked"); inCal

2018-02-02 11:15:03 3564

原创 策略模式

模式定义 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。核心: 将算法封装到子类中,由接口对象管理,根据初始化的对象选择需要的策略算法。模式结构 策略模式包含如下角色: Context: 环境类 Strategy: 抽象策略类 ConcreteStrategy: 具体策略类代码实现

2018-01-29 20:02:40 229

原创 观察者模式与RegistrantList机制

观测者模式介绍: 常用于GUI系统,订阅发布系统。其主要作用就是解耦。将观察者和被观察者解耦。 观察者模式定义: 定义对象间一对多的关系,每当一个对象改变时所有依赖于它的对象都会得到通知并自动更新。简单实现: 1.主题拥有一个观察者的对象集合 2.有注册去注册方法和更新方法,其中更新方法会调用观察者对象自身的update方法

2018-01-27 11:30:06 1568

原创 Android 8.0 Phone对象解析

Phone的追溯 在Android中我们可以查看后台的进程,会发现存在常驻phone进程。进程名一般是该app的包名,搜索package=”com.android.phone” 在/packages/services/Telephony/AndroidManifest.xml发现如下定义"http://schemas.android.com/apk/res/android"

2018-01-24 20:26:05 3086 1

原创 Android 8.0来电流程分析(一)

来电时底层会上报消息到RIL层,在Android8.0上目前已经做了修改,不再使用Socket进行通信,而是使用ril_service服务进行通信,O的系统上引入了HIDL机制,telephony的framework层引用底层的服务就用到了此机制,这也导致了RIL层的调整,本篇博客在7.0的基础上进一步分析其变化,建议同步对照7.0和8.0的代码阅读。 1.我们从RIL层开始往上追溯,RIL接收

2018-01-21 11:19:10 11283 2

原创 工厂方法模式

工厂方法模式的定义:用于创建对象的接口,让子类决定实例化哪个类。 工厂方法模式的使用场景: 在需要生成复杂对象的地方都可以使用 工厂方法的UML类图: 工厂方法的简单实现://抽象产品及具体产品类public abstract class Product { abstract void method();}public class ProductA ext

2018-01-17 22:19:35 202

原创 Android7.0去电流程源码分析(三)

上篇博客分析到调用ServiceConnection,这里接着分析 1.ServiceConnection.java类中实现了该远程服务 private final IBinder mBinder = new IConnectionService.Stub() 并重写了其接口,这里我们主要关注 @Override public void createCo

2018-01-17 22:01:43 1635

原创 Android7.0去电流程源码分析(二)

上篇博客分析到调用broadcastIntent,这里接着分析 1.接着查看NewOutgoingCallIntentBroadcaster.java文件中的broadcastIntent方法: private void broadcastIntent( Intent originalCallIntent, String number,

2017-12-21 22:48:08 1083

原创 Android7.0去电流程源码分析(一)

2.去电从拨号盘界面有关拨号的部分由DialpadFragment.java实现,无论是单卡还是双卡,当点击拨号按键时,最后都会调用handleDialButtonPressed方法进行处理,DialogFragmentCall_Action的活动Call_Action的活动 private void handleDialButtonPressed() { if (isDig

2017-12-20 22:51:00 2264 2

原创 原型模式

原型模式的定义: 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。使用场景: 1.类的初始化需要非常多资源时(数据硬件资源),通过原型拷贝避免这些消耗 2.通过new一个对象需要非常繁琐的数据准备和访问权限时 3.一个对象要供给多个对象访问,而且多个对象都肯要修改其值时,可以通过原型模式拷贝多个对象共调用者使用原型模式多用于创建复杂或者构造耗时的实例,这时复制一个已有的实例使得

2017-12-07 22:00:09 328

原创 建造者模式

建造者模式: 将构建复杂对象的过程和它的部件解耦,使得构建构成和部件隔离开来,使得同样的构造过程可以创建不同的表示,如生产电脑的过程等。可以看成做东西,怎么做(Director)?做什么(Product)?谁来做(Builder)?来看待该模式。 使用场景: 1.相同的方法不同的执行顺序,产生不同的事件结果。 2.当初始化一个对象特别复杂,如参数特别多或者很多参数具有默认值时。—>链式构造

2017-11-14 23:03:10 199

原创 Android架构学习-OOP复习

1.第一讲 1.“-Oriented” 基於軟硬整合觀點 的涵意 ” -Based” 的涵意;例如:Requirement-based –基于需求,有先后的顺序,例如先进行需求分析;然后基于需求分析的结果(文件),而进行后续的软件开发活动;就称为: Requirement-based softwaredevelopment ” -Driven” 的涵意;

2017-11-12 23:53:15 388

原创 单例模式

应用场景: 整个系统只需要一个全局对象,如一个应用中只有一个配置文件或者ImagerLoader实例,ImagerLoader中含有线程池,缓存系统,网络请求等,故不能自由的构造对象。单例模式常见的有三类: 1.饿汉式 2.懒汉式 3.加锁式单例模式实现的关键: 1.私有的构造函数–>确保外界无法构造 2.自身持有一个对象–>私有且静态的,保证全局唯一 3.公有的静态...

2017-10-25 22:08:56 177

原创 C++学习摘要7

第17章 模板与类型转换模板的定义及目的 将一种数据类型定义为参数,然后将不同数据类型按照实参形式传送而实现代码重用(类似与java的泛型机制),减少由于类型不同而产生的无所谓的重载。模板的定义及使用#include<iostream>using std::cout;using std::endl; template<class T>T min(T x,T y){ retur

2016-11-28 12:12:49 180

原创 C++学习摘要6

第15章 C++中文件处理文件的基本概念及优点 使用文件的优点: 1.程序可以对不同的输入进行处理。 2.方便用户处理。 3.不受内存大小限制。文件操作的步骤 1.建立流对象 2.打开或建立文件 3.进行读写操作 4.关闭文件 对文件操作的流主要有三个:fstream(输入输出流),ifstream(输入流),ostream(输出流),#include<iostream>#

2016-11-23 16:10:35 222

原创 C++学习摘要5

第十一章 构造函数和析构函数构造函数的定义与重载 1.在创建对象(new)的时候调用构造函数.可以重载多个构造函数。但必须注意保留默认构造函数,和防止出现构造的歧义。 2.构造函数不需要被用户调用,也不能被用户调用默认构造函数(不带参数或所有参数都有默认值) C++中,在一个类中没有定义构造函数,不一定会自动生成默认构造函数。只有以下四种情况时才会生成。 1.带有含有默认构造函数的成员类

2016-11-15 21:48:51 189

原创 C++学习摘要4

第九章 Struct和其他复合类型学习要点结构体(struct)的声明与定义 结构体声明后并不直接分配内存,只是说明该结构体有哪些成员类型组成。当程序定义该结构体类型的变量时才分配存储空间。#include<iostream>using namespace std;struct point{//结构体的定义 int a; int b; char c; ch

2016-11-04 10:42:38 264

原创 C++学习摘要3

第六章 函数学习要点函数的声明,定义,调用参数的传递 值传递、引用传递变量的作用域 局部变量、静态变量(static)、外部变量(extern声明外部已经存在)、寄存器变量(register加快访问速度)内联函数(inline),解决频繁调用函数频繁调用开销问题预处理器 -函数重载,具有相同函数名不同参数列表的函数疑难解惑const和#define的区别 宏定义只是单纯的

2016-11-03 12:06:55 232

原创 C++学习摘要2

第二章学习要点:不要用#include”stdio.h”,使用<>来引用,<>用来引用标准头文件,”“引用自定义头文件iostream.h和string.h头文件已经废弃,改用iostream和cstring不要将main函数的返回值定义为voidint main(int argc,char** argv)可以传参进main函数声明extern和定义 可以声明多次,但只能定义一次,声明只

2016-11-02 10:28:34 280

原创 C++学习摘要

c++学习总结

2016-10-26 09:13:05 411

原创 Java回调机制分析

在安卓学习过程中经常听到回调函数,也经常用到回调函数,但只是有这个概念,并不清楚具体回调函数的运行机制。网上看了许多博客,大都采用代码分析。这里我们采用代码结合图例进行分析讲解。 先来看下回调的含义。就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。反正这说法我也看的模糊。 那我们在来看个通俗点的说法。有一天老王遇到一个很难的问题,问题是“1

2016-07-28 13:33:14 346

原创 Java动态绑定机制--笔记

在实例化一个对象后,编译器如何调用对象的方法呢? 1)编译器查看对象的声明类型和方法名 eg: A a = new A();a.f(param); 由于Java用于重载机制,那么类A中就可能有多个f方法,例如f(String name)或者f(int age); 所以在这一步,编译器将调用所有的访问属性符合及方法名为f的调用方法 2)编译器查看调用方法时提供的参数类型

2016-04-23 16:48:23 290

原创 Java对象类型的转型分析

类型转换问题引入Java语言提供了进行普通类型转换的方法。例如:double x = 3.14;int y = (int)x;那么某个类的对象引用转换成另一个类的对象引用会产生什么情况。例如://Manager为Employee的子类//会发生向下转型产生错误--超类到子类Employee employee = new Employee();Manager manager = (Manger

2016-04-23 16:05:37 755

WCDMA主要信令流程

宽带码分多址(英语:Wideband Code Division Multiple Access,常简写为W-CDMA)是一种3G蜂窝网络,使用的部分协议与2G GSM标准一致。具体一点来说,W-CDMA是一种利用码分多址复用(或者CDMA 通用 复用技术,不是指CDMA标准)方法的宽带扩频3G移动通信空中接口

2018-03-07

LTE信令分析流程

LTE(Long Term Evolution,长期演进)是由3GPP(The 3rd Generation Partnership Project,第三代合作伙伴计划)组织制定的UMTS(Universal Mobile Telecommunications System,通用移动通信系统)技术标准的长期演进,于2004年12月在3GPP多伦多会议上正式立项并启动。LTE系统引入了OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)和MIMO(Multi-Input & Multi-Output,多输入多输出)等关键技术,显著增加了频谱效率和数据传输速率(20M带宽2X2MIMO在

2018-03-06

Python核心编程(中文第二版)

本书是Python开发者的完全指南——针对 Python 2.5全面升级 ·学习专业的Python风格、最佳实践和好的编程习惯; ·加强对Python对象、内存模型和Python面向对象特性的深入理解; ·构建更有效的Web、CGI、互联网、网络和其他客户端/服务器架构应用程序及软件; ·学习如何使用Python中的Tkinter和其他工具来开发自己的GUI应用程序及软件; ·通过用C等语言编写扩展来提升Python应用程序的性能,或者通过使用多线程增强I/0相关的应用程序的能力; ·学习Python中有关数据库的API,以及如何在Python中使用各种不同的数据库系统,包括MySQL、Postgres和

2018-02-09

深入理解android telephony原理剖析与最佳实践

《深入理解Android:Telephony原理剖析与最佳实践》是“深入理解Android”系列的第3本,前两本书的内容和质量在Android开发者社群内得到了高度认可,已经树立起该系列图书的品牌。在写作思路和方式上,《深入理解Android:Telephony原理剖析与最佳实践》与前两本书一脉相承,对它们的优点进行了继承和发扬;在内容上,《深入理解Android:Telephony原理剖析与最佳实践》从从源代码角度深入解析了Android Telephony的架构设计与实现原理,深刻揭示了Android系统的通信机制。对于Android应用开发工程师和系统工程师而言,《深入理解Android:Telephony原理剖析与最佳实践》都是难得的研究和学习资料。

2018-02-08

source_insight4.0免费版本

Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息。

2018-01-30

3GPP24系列中文文档

3GPP的目标是实现由2G网络到3G网络的平滑过渡,保证未来技术的后向兼容性,支持轻松建网及系统间的漫游和兼容性。 其职能: 3GPP主要是制订以GSM核心网为基础,UTRA(FDD为W-CDMA技术,TDD为TD-CDMA技术)为无线接口的第三代技术规范

2018-01-30

3GPP 24系列文档

3GPP的目标是实现由2G网络到3G网络的平滑过渡,保证未来技术的后向兼容性,支持轻松建网及系统间的漫游和兼容性。 其职能: 3GPP主要是制订以GSM核心网为基础,UTRA(FDD为W-CDMA技术,TDD为TD-CDMA技术)为无线接口的第三代技术规范.

2018-01-30

空空如也

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

TA关注的人

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