自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 AndroidO 图形框架下应用绘图过程——Surface创建

Android图形框架在前几年已经分析过了,不过,随着Android版本的升级,虽然框架主体未变,但有些细节变动还是比较大的,应网友要求,今天再次以AndroidO为基础,重新介绍图形框架实现,Android图形框架包括以下三大部分:1. 应用绘图;2. SurfaceFlinger混合图层;3....

2018-06-13 16:14:46 3768 10

原创 AndroidO 下图形显示框架变化介绍

Android显示框架随着Android版本的不断升级,也在不断变化修改,但主体框架未变,依然保持Android4.0上定制的实现结构,只是类命名更加清晰,实现方式更加明了,同时随着HAL版本的不断升级,增加了一些额外的接口,随着AndroidO引入Treble架构,显示框架也作了必要的调整。An...

2018-05-07 10:07:53 4868 3

原创 AndroidO Treble架构下HIDL服务Java框架实现

前面介绍了HIDL服务在native层的实现过程,包括HIDL服务加载创建、服务注册、服务查询过程等,那么Java层是否也实现了相关的服务框架呢? 通常情况下,所有的Hal都实现在native层面,每个hal进程都是一个native进程,由init进程启动,在hal进程启动时会完成HIDL服务注册...

2018-04-10 12:14:55 4373 2

原创 AndroidO Treble架构下HIDL服务查询过程

通过前面的分析我们知道,Hal进程启动时,会向hwservicemanager进程注册hidl服务,那么当Framework Server需要通过hal访问硬件设备时,首先需要查询对应的hidl服务,那么Client进程是如何查询hidl服务的呢?这篇文章将展开分析,这里再次以IComposer为...

2018-04-09 18:09:40 5234 0

原创 AndroidO Treble架构下Tranport类型查询过程

通过前面文章的分析,我们知道,Client进程在查询hidl服务接口对象时,会根据该hidl服务的Tranport类型选择加载方式,如果是HWBINDER,那么就从hwservicemanager中查询,如果是PASSTHROUGH,那么就通过PassthroughServiceManager将h...

2018-04-09 16:18:30 1867 0

原创 AndroidO Treble架构下hwservicemanager启动过程

hwservicemanager是hidl服务管理中心,负责管理系统中的所有hidl服务,由init进程启动。service hwservicemanager /system/bin/hwservicemanager user system disabled group s...

2018-04-09 15:48:42 5545 0

原创 AndroidO Treble架构下Binder对象的转换过程

上文中详细分析了Hal的整个启动过程,这里将补充上文中没有详细分析的Binder对象转换过程,下图为hidl服务的完整注册过程:1.  HwcHal继承于IBase类,是对hw_module_t的封装,该对象位于Hal进程空间;2.  通过hwservicemanager的binder代理将Hwc...

2018-04-09 14:17:17 1858 2

原创 AndroidO Treble架构下Hal进程启动及HIDL服务注册过程

通过前面对Treble架构的介绍,我们知道,Android Framework进程和Hal分离,每个Hal独立运行在自己的进程地址空间,那么这些Hal进程是如何启动的呢?本文以composer hal为例展开分析。在以下路径有composer hal的rc启动脚本:hardware/interfa...

2018-04-09 10:46:59 15535 3

原创 AndroidO Treble架构下的接口文件编译

HIDL是一种接口定义语言,描述了HAL和它的用户之间的接口。同aidi类似,我们只需要为hal定义相关接口,然后通过hidl-gen工具即可自动编译生成对应的C++或者java源文件,定义hal接口的文件命名为xxx.hal,为了编译这些.hal文件,需要编写相应的Android.bp或者And...

2018-04-07 13:35:44 2765 3

原创 AndroidO Treble架构下的变化

AndroidO引入Treble架构后,有那些变化呢?1. 增加了多个服务管家,AndroidO之前版本有且只有一个servicemanager,现在增加到3个,他们分管不同的服务。2.增加了binder通信库,这是为了适配binder域的扩展。3.增加了binder域,系统定义了3个binder...

2018-04-06 20:24:34 2895 1

原创 AndroidO Treble架构分析

从AndroidO开始,google引入了Treble架构,目的是为了方便系统升级,将oem定制的东西和Framework分离。AndroidO之前的版本:在此之前的Android系统架构当中,Android Framework与Android HAL是打包成一个system.img的,而且Fra...

2018-04-06 19:40:49 3127 0

原创 GitHub 优秀的 Android 开源项目

主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditText、TableView、Activity Animation等等。 ...

2015-01-15 08:28:37 3109 3

转载 Android应用程序权限管理

在Android源码frameworks/base/api/current.txt中定义了所有应用程序所需的权限 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位...

2015-01-05 10:09:49 10834 0

原创 Ubuntu Vim配置

ctags的搭建与使用 1.下载源码包:http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz 2.解压 tar zxvfctags-5.8.tar.gz 3.配置 ./configure 4.make 5.m...

2014-12-31 14:39:18 1484 0

原创 ubuntu安装搜狗输入法

ubuntu安装搜狗输入法 sudo apt-add-repository ppa:fcitx-team/nightly #添加源 sudo apt-get update #更新源 sudo apt-get remove fcit...

2014-12-31 09:00:16 1304 1

原创 在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘

install sshfs sudo apt-get install sshfs sudo modprobe fuse sudo adduser apuser fuse sudo chown root:fuse /dev/fuse Now, assuming that you have an ...

2014-12-31 08:58:30 1324 0

原创 Linux shell 之特殊变量

$$   Shell本身的PID(ProcessID) $!   Shell最后运行的后台Process的PID $?   最后运行的命令的结束代码(返回值) $-   用Set命令设定的Flag一览 $*   有参数列表。如"$*"用「"」括起来的情况、以&...

2014-11-21 13:07:26 835 0

原创 Linux shell 之比较判断

整数比较  -eq       等于,如:if [ "$a" -eq "$b" ]  -ne       不等于,如:if [ "$a" -ne "$b" ]  -gt       大于,如:if [ &...

2014-11-21 12:57:07 764 0

原创 Linux shell之数组使用

1.数组定义:a=(1 2 3 4 5) 2.数组引用:${a[@]} 3.数组长度:${#a[@]} 4.打印数组:echo ${a[*]} 5.数组元素引用:${a[2]} 用${数组名[下标]} 下标是从0开始  下标是:*或者@ 得到整个数组内容 6.数组元素赋值:a[1...

2014-11-21 12:54:59 938 0

原创 深入剖析Android音频之AudioTrack

播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在fra...

2014-10-11 11:05:14 20022 2

原创 深入剖析Android音频之AudioSystem

AudioSystem是AudioPolicyService和AudioFlinger对外提供接口类。

2014-10-11 09:41:11 3086 0

原创 Android系统Choreographer机制实现过程

在Android4.1之后增加了Choreographer机制,用于同Vsync机制配合,实现统一调度界面绘图. Choreographer构造过程 frameworks\base\core\java\android\view\Choreographer.java public static...

2014-09-24 09:12:15 19463 5

原创 Android系统Audio框架介绍

音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量。响度与声波的振幅有直接关系。 音调(Pitch) 音调与声音的频率有关系,当声音的频率越大时,人耳所感知到的音调就越高,否则就越低。 音色(Quality) 同一种乐器,使用不...

2014-09-24 08:49:49 21749 6

原创 深入剖析Android音频之AudioPolicyService

AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么设备等等。而AudioFlinger则是策略的执行者,例如具体如何与音频设备通信,如何维护现有系统中的音频设备,以及多个音频流的混音如何处理等等都得由它来完成。AudioPolicy...

2014-09-23 16:36:22 16605 4

原创 Android debuggerd 源码分析

debuggerd 简介 Android系统自带一个实用的程序异常退出的诊断daemon debuggerd。此进程可以侦测到程序崩溃,并将崩溃时的进程状态信息输出到文件和串口中,以供开发人员分析调试使用。Debuggerd的数据被保存在/data/tombstone/目录下,共可保存10个文件...

2014-08-06 11:16:28 12877 6

原创 Android文件监控FileObserver介绍

在前面的Linux文件系统Inotify机制 中介绍了Linux对文件变更监控过程。Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制。FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时...

2014-07-02 12:13:25 5399 0

原创 Android应用程序窗口设计框架介绍

在Android系统中,一个Activity对应一个应用程序窗口,任何一个Activity的启动都是由AMS服务和应用程序进程相互配合来完成的。AMS服务统一调度系统中所有进程的Activity启动,而每个Activity的启动过程则由其所属进程来完成。AMS服务通过realStartActivi...

2014-07-01 19:47:43 9472 12

原创 Android显示系统设计框架介绍

1. Linux内核提供了统一的framebuffer显示驱动,设备节点/dev/graphics/fb*或者/dev/fb*,以fb0表示第一个显示屏,当前实现中只用到了一个显示屏。 2. Android的HAL层提供了Gralloc,分为fb和gralloc两个设备。设备fb负责打开内核中的f...

2014-04-02 08:32:22 19894 6

原创 Android中集成第三方软件包

1.编译一个简单的APK LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirectory LOCAL_SRC_FILES := $(call all-subd...

2014-03-19 20:04:01 1781 0

原创 Android 应用程序建立与WMS服务之间的通信过程

我们知道WindowManagerService服务运行在SystemServer进程中,应用程序启动Activity时,需要请求WMS为启动的Activity创建对应的窗口,同时WMS也负责修改窗口属性,因此这里就涉及到应用程序进程与WMS服务之间的跨进程交互过程。在前面我们介绍了Android...

2014-01-24 16:51:35 6453 1

原创 Android ART虚拟机

Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司。ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,...

2014-01-17 17:17:35 5970 2

原创 Android PreferenceActivity使用

PreferenceActivity继承了ListActivity,定义Activity继承PreferenceActivity。在res目录下新建一个xml文件夹,接着在这个文件夹下新建一个取名为preferences.xml的File文件,xml中可以使用的标签(Tag)可以分为两类,一类是管...

2014-01-03 10:58:01 5226 0

原创 Android ListView实现方法三(自定义适配器)

public abstract class ArrayListAdapter extends BaseAdapter { protected List mListData; protected Context mContext; public ArrayListAdapter(Cont...

2014-01-02 16:13:34 1031 0

原创 Android ListView实现方法二

Screen Layout ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you...

2014-01-02 15:48:29 1013 0

原创 Android ListView实现方法一(ListActivity)

继承ListActivity就可以不用setContentView,Android也会自动帮我们构造出一个全屏的列表。 public class SettingActivity extends ListActivity { private static String[] allTest = n...

2014-01-02 15:44:08 1031 0

原创 Android 应用程序进程启动过程源码分析

在Zygote进程启动过程的源代码分析一文中介绍到,Zygote是java世界的开创者,所有的java应用进程都是通过Zygote孵化出来的。我们知道在Android应用程序框架层中,ActivityManagerService组件负责管理Android应用程序的创建,ActivityManage...

2013-12-11 12:39:40 6059 4

原创 SystemServer进程启动过程源码分析

在上一篇文中介绍了Zygote进程的启动过程,我们知道,Zygote进程是Android Java世界的开创者,所有的Java应用程序进程都由Zygote进程创建。Zygote创建应用程序进程过程其实就是复制自身进程地址空间作为应用程序进程的地址空间,因此在Zygote进程中加载的类和资源都可以共...

2013-12-11 12:32:52 5718 1

原创 Zygote进程启动过程源代码分析

Android系统借用Binder通信机制实现了C/S架构设计,客户端应用程序如需要实现某些功能,只需请求指定的服务,由服务端来实现。Android服务包括以上的系统服务和应用服务,系统服务是指Android系统在启动过程就已经启动实现了的服务,对于系统服务又分为Java服务和本地服务,其实很好区...

2013-12-11 08:55:37 6518 5

原创 Android服务启动之StartService源码分析

在编写Android应用程序时,我们一般将比较耗时的操作放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验。Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startServ...

2013-12-10 16:41:58 7730 1

原创 Android上下文服务管理查询过程

在开发Android应用程序时,如果需要使用系统提供的服务,可以通过服务名称调用山下文的getSystemService(String name)来获取服务管理者,那么该函数是如何实现服务查询的呢? frameworks\base\core\java\android\app\ContextImp...

2013-12-05 16:34:59 2158 0

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