必读: Android 12(S) 图形显示系统 - 开篇 一.前言 在前面的文章中,已经出现过 GraphicBuffer 的身影,GraphicBuffer 是Android图形显示系统中的一个重要概念和组件,顾名思义,它就是用来存储和传递需要绘制的图像数据的.GraphicBuffer 可以在应用程序和 BufferQueue 或 SurfaceFlinger 间传递. 本文及接下来的几篇文章,将聚焦分析 GraphicBuffer 创建的流程,相关组件.服务的基本架构和基本实现原理. 二…
题外话 疫情隔离在家,周末还在努力学习的我  ..... 一.前言 上一篇文章中,有基本讲清楚Producer一端的处理逻辑,最后也留下了一个疑问: Consumer是什么时候来消费数据的?他是自己主动来取的?还是收到了某种通知后再来处理的? 这篇文章,就带着这些疑问来开始分析源码.开头还是把这种流程图贴一下 二.Listener监听器的回调过程解析 生产者写完数据,把buffer还给buffer queue后,又是怎样通知消费者来使用的呢? 下面这些解析步骤,就是回答上面的问题 1. 生产者把…
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 因为个人工作主要是Android多媒体播放的内容,在工作中查看源码或设计程序经常会遇到调用API: static inline int native_window_api_connect(struct ANativeWindow* window, int api) static inline int native_window_api_disconnect(struct ANativeWindow* window, int a…
必读: Android 12(S) 图像显示系统 - 开篇 一.前言 为了提高Android系统的UI交互速度和操作的流畅度,在Android 4.1中,引入了Project Butter,即"黄油计划".就像该计划的名字那样,Google期望通过这一新的机制可以让Android系统摆脱UI交互时给用户带来的滞后感,从而像黄油一样顺滑. 当然优化是无止境的,Project Butter只是迈出了重要的第一步,后续的Android版本中陆续也有引入一些其它的优化机制,促进UI渲染性能的不…
Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 <key keyCode="KEYCODE_TV" component="com.thisway.app_0001_leddemo/.MyBroadcastReceiver" /> 1.2 APP应该注册广播消息的接收者 1.2.1 编写BroadcastRe…
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目实战(二十八):使用Zxing实现二维码及优化实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中我们也许只会用到二维码的扫描和生成两个功能,所以不必下载完整的…
1 前言 SurfaceFlinger作为Android图形显示系统处理逻辑的核心单元,我们有必要去了解其是如何启动,初始化及进行消息处理的.这篇文章我们就来简单分析SurfaceFlinger这个Binder系统服务的一些基本处理逻辑.接下来分两部分讲解: >> SurfaceFlinger启动与初始化 >> SurfaceFlinger消息队列处理机制 Tips: 本篇涉及的代码位置: /frameworks/native/services/surfaceflinger/ 2…
必读: Android 12(S) 图像显示系统 - 开篇 1 前言 这一篇文章,将继续讲解有关VSync的知识,前一篇文章 Android 12(S) 图像显示系统 - SurfaceFlinger之VSync-上篇(十六)中,主要是分析了SurfaceFlinger启动后VSync的一些初始化流程,以及vsync events的分发逻辑. vsync events汇集到了两个地方: 1. MessageQueue::vsyncCallback  ==> VSYNC-sf 2. EventTh…
Android系统--输入系统(十)Reader线程_核心类及配置文件深入分析 0. 前言 个人认为该知识点阅读Android源代码会不仅容易走进死胡同,并且效果并不好,前脚看完后脚忘记,故进行总结,希望可以更好帮助大家了解,了解之后在进行阅读源代码会有事半功倍的效果. 1. 引入 由输入系统(九)实验得出 keylayout文件:只是用来表示驱动上报的scancode对应哪一个android按键(AKEYCODE_x)只是表示按键被按下. kcm文件: 用来表示android按键(AKEYCO…
Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个问题便是构成Dispatch线程的主要两个部分,也是今天博文主要讨论的问题,本次只是简单介绍框架,具体介绍会在后续博文具体说明. 2. Dispatch线程分发过程 2.1 针对发什么? 首先需获得事件: (1)简单处理 进行输入事件分类(Global按键.system按键.用户按键) 处理紧急事件…