必读: 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…
1 前言 为了更深刻的理解Android图形系统抽象的概念和BufferQueue的工作机制,这篇文章我们将从Native Level入手,基于Android图形系统API写作一个简单的图形处理小程序.透过这个小程序我们将学习如何使用Native API创建Surface,如何请求图形缓冲区,如何向图形缓冲区中写入数据等知识.Talk is cheap, show me the code.让我们马上开始吧! 注:本系列文章的分析及代码均基于Android 12(S) Source Code,可参…
二维码的定义: 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等.1.堆叠式/行排式二维条码,如,Code 16K.Code 49.PDF417(如下图)等. 2.矩阵式二维码,最流行莫…
Android基础--项目的文件结构(二) AndroidManifest.xml文件分析 [注]此项目文件结构仅限于Android Studio下的Android项目!!! 在一个Android项目中,AndroidManifest.xml文件(安卓清单文件)是整个APP的配置文件,它位于文件结构中app文件夹中,相当于根目录.四大组件都需要在AndroidManifest.xml文件中声明才可以使用,APP用到的相关权限都需要在AndroidManifest.xml文件中配置才不会影响使用,…
题外话 刚刚开始着笔写作这篇文章时,正好看电视在采访一位92岁的考古学家,在他的日记中有这样一句话,写在这里与君共勉"不要等待幸运的降临,要去努力的掌握知识".如此朴实的一句话,此时此刻,正适合我们. 1 前言 回到前面的文章:Android 12(S) 图形显示系统 - 示例应用(二)  ,在上一篇文章中已经讲解了应用如何与SurfaceFlinger建立连接和通信,接下来就要去创建Surface了,当然在此之前,还有获取屏幕Display信息的操作,这不是关注的重点,先不展开讲解.…
题外话 你有没有听见,心里有一声咆哮,那一声咆哮,它好像在说:我就是要从后面追上去! 写文章真的好痛苦,特别是自己对这方面的知识也一知半解就更加痛苦了.这已经是这个系列的第六篇了,很多次都想放弃了,但最终还是坚持下来了,因为我真的好像搞懂这一块. 1 前言 前面一篇文章中,我们已经介绍了createSurface的流程,也在SurfaceFlinger中去创建了图层layer,但一直没有看到buffer queue的踪影.其实,据我观察 Android 12 将BufferQueue的相关逻辑移…
题外话 "行百里者半九十",是说步行一百里路,走过九十里,只能算是走了一半.因为步行越接近目的地,走起来越困难.借指凡事到了接近成功,往往是最吃力.最艰难的时段.劝人做事贵在坚持,有始容易,有终实难. 不多说了,希望自己能坚持写完这个系列 ...... 1 前言 在前几篇文章中,你应该已经看到文中有冒出来比较多的陌生的类,比如 Surface/SurfaceControl/ANativeWindow/ANativeWindowBuffer,这些类有什么作用?它们之间有什么关系?以及它们…
题外话 最近总有一个感觉:在不断学习中,越发的感觉自己的无知,自己是不是要从"愚昧之巅"掉到"绝望之谷"了,哈哈哈 邓宁-克鲁格效应 一.前言 前面的文章中已经讲解了如何去创建一个Surface,也讲了一些操作Surface的知识,接下来就是如何利用这个Surface进行绘图呢? 在此开始讲解buffer queue的工作流程,看看图形数据是怎样流转的? 图形缓冲区的申请和消费流程是怎样的?有哪些核心类?等等问题在接下来的文章中陆续展开. 这篇文章中,先介绍一些基本…
题外话 Covid-19疫情的强烈反弹,小区里检测出了无症状感染者.小区封闭管理,我也不得不居家办公了.既然这么大把的时间可以光明正大的宅家里,自然要好好利用,八个字 == 努力工作,好好学习 一.前言 这篇文章中,将详细讲解 生产者 -- 图形缓冲队列 -- 消费者 这个模型的的具体工作流程.我们还是从我们的demo运行流程着手. 可以再回头看看 Android 12(S) 图形显示系统 - 示例应用(二) 在demo示例中,我们获取buffer --> 填充数据 --> 送出显示的代码如下…
题外话 疫情隔离在家,周末还在努力学习的我  ..... 一.前言 上一篇文章中,有基本讲清楚Producer一端的处理逻辑,最后也留下了一个疑问: Consumer是什么时候来消费数据的?他是自己主动来取的?还是收到了某种通知后再来处理的? 这篇文章,就带着这些疑问来开始分析源码.开头还是把这种流程图贴一下 二.Listener监听器的回调过程解析 生产者写完数据,把buffer还给buffer queue后,又是怎样通知消费者来使用的呢? 下面这些解析步骤,就是回答上面的问题 1. 生产者把…