深入理解Android Camera架构三-硬件抽象层 Posted on 2024-03-20 一、概述始于谷歌的Treble开源项目,基于接口与实现的分离的设计原则,谷歌加入了Camera Provider这一抽象层,该层作为一个独立进程存在于整个系统中,并且通过HIDL这一自定义语言成功地将Camera Hal Module从Camera Service中解耦出来,承担起了对Camera ... Read more »
深入理解Android Camera架构二-服务层 Posted on 2024-02-20 一、概述Camera Service被设计成一个独立进程,作为一个服务端,处理来自Camera Framework 客户端的跨进程请求,并在内部进行一定的操作,随后作为客户端将请求再一次发送至作为服务端的Camera Provider,整个流程涉及到了两个跨进程操作,前者通过AIDL机制实现,后者通 ... Read more »
深入理解Android Camera架构一-应用层 Posted on 2024-01-20 相机应用处于整个框架的上层,在现实生活中,为了满足各式各样的应用场景,会加入很多业务处理逻辑,但是一旦当我们拨开繁杂的业务逻辑,便会发现其核心部分依然是通过调用谷歌制订的一系列Camera Api接口来完成的,而所有的相机行为都包含在该接口中。 起初,相机系统采用的是Camera Api v1接口, ... Read more »
Android视频基础知识 Posted on 2023-12-15 一、图像概念像素 像素是图像的基本单元,一个个像素就组成了图像。你可以认为像素就是图像中的一个点。在下面这张图中,你可以看到一个个方块,这些方块就是像素。 分辨率 图像(或视频)的分辨率是指图像的大小或尺寸。我们一般用像素个数来表示图像的尺寸。比如说一张1920x1080的图像,前者1920指的是 ... Read more »
Android音频基础知识 Posted on 2023-11-16 一、音频数据1.1 声音概念音频文件的生成过程是将声音信息采样、量化和编码产生的数字信号的过程,我们人耳所能听到的声音频率范围为(20Hz~20KHz),因此音频文件格式的最大带宽是20KHZ。 声音有三个属性: 音调:声音频率的高低,表示人的听觉分辨一个声音的调子高低的程度。音调主要由声音的频率 ... Read more »
Android Framework接口开发总结 Posted on 2023-10-15 Android Framwork开发过程中,经常会遇到新增接口的需求,下面将介绍基本上所有需要用到的接口开发流程。 一、JNI接口在系统开发接口过程中,很多情况需要通过JNI接口的方式调用一些库或者驱动,通过Android studio的方式构建native工程比较简单,下面主要介绍在framewo ... Read more »
Android Framework学习总结 top | Posted on 2020-07-31 经过一段时间的学习,对于Android Framework大部分有一定的了解,现在将之前的学习进行总结并分类。 1.Android系统启动相关Android系统SystemServer启动(上) Android系统SystemServer启动(下) 开机广播BOOT_COMPLETED发送流程分析 ... Read more »
Android刷新机制-SurfaceFlinger原理 Posted on 2020-07-15 一、概述SurfaceFlinger作为负责绘制应用UI的核心,Android平台所创建的Window都是由surface所支持,所有可见的surface渲染到显示设备都是通过SurfaceFlinger来完成的。 SurfaceFlinger进程是由init进程创建,运行在独立的SurfaceFl ... Read more »
Android刷新机制-Choreographer原理 Posted on 2020-06-30 一、概述前面介绍了屏幕刷新机制中的view绘制原理,涉及到的Choreographer并没有深入其里面具体的操作,这一篇讲详细介绍Choreographer。Choreographer翻译成中文是编舞者的意思,在Android系统4.1开始加入这个类,主要来控制同步处理输入(input),动画(an ... Read more »
Android刷新机制-View绘制原理 Posted on 2020-06-10 一、概述本文将从startActivity开始讲解Android屏幕刷新机制,前面的文章有分析过startActivity的启动过程,这里将重点分析WMS相关的过程,从而了解Android屏幕刷新机制原理。前面介绍的startActivity启动过程的流程图如下: 二、View的绘制过程从启动过程 ... Read more »
Android JNI原理分析 Posted on 2020-05-16 一、概述JNI(Java Native Interface,Java本地接口),是连接Android Native层和Java层的纽带,这个是Java所特有的,并不是Android系统独有。Java作为跨平台的语言,依靠的是虚拟机,虚拟机采用C/C++编写,适配各个系统,通过JNI为上层Java提供 ... Read more »
Android10.0如何hook Activity Posted on 2020-04-04 在插件化中,hook Activity作为最基本的技术,用来在宿主app中新增Activity,而通常情况下,Activity必须在Manifest中注册在才可以使用,下面将就Android10.0来分析hook Activity的详细过程。 要hook Activity之前,必须知道Activit ... Read more »
深入理解Binder机制6-总结篇 Posted on 2020-03-15 深入理解Binder机制系列如下: 深入理解Binder机制1-AIDL原理深入理解Binder机制2-注册服务addService深入理解Binder机制3-获取服务getService深入理解Binder机制4-bindService过程分析深入理解Binder机制5-binder驱动分析深入理 ... Read more »
深入理解Binder机制5-binder驱动分析 Posted on 2020-02-26 一、概述Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理,主要是驱动设备的初始化(binder_init),打开(binder_open),映射(binder_mmap), ... Read more »
深入理解Binder机制4-bindService过程分析 Posted on 2020-02-10 一、概述1.1 Binder架构Android内核基于Linux系统,而Linux系统进程间通信方式有很多,如管道,共g享内存,信号,信号量,消息队列,套接字。而Android为什么要用binder进行进程间的通信,这里引用gityuan在知乎上的回答: (1)从性能的角度数据拷贝次数 Binder ... Read more »