![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android源码解析
文章平均质量分 85
红-旺永福
我的架构师之路!!
展开
-
Opengl ES系列学习--光照贴图
本节我们来学习一下光照贴图的知识,还是在之前的基础上不断完善,效果越来越真实,本节实现的效果如下。 一共四个效果,上面两个是只有漫反射贴图的效果,下面两个是漫反射贴图和光照贴图一起的效果,左侧两个是加了光源随时间变化的影响。大部分的代码都和上一节相同,修改比较小,可以看到作者的思路就是把所有能完善的细节一步步的完善,这样就能得到更好的效果。 本节的Render渲染类是GlLightMapRender,完整源码如下:package com.opengl.learn....原创 2020-09-06 23:00:30 · 343 阅读 · 0 评论 -
Opengl ES系列学习--蜗牛
今天的这个蜗牛真是太猛了,计算量超大,GPU直接拉到最高频,而且负载99%!!这是什么样的计算量,我们相机使用Opengl ES平时绘制的预览,GPU是最低频,而且负载也只有3%--10%左右,看来我们的技术还不够深,要能真正实现一个功能,正常使用GPU达到这样的频率的话,那才能突显出一定的水平。来看下蜗牛的效果。 GlSnailRender类的完整源码如下:package com.opengl.learn.aric;import android.content.Cont...原创 2020-08-31 23:06:30 · 1480 阅读 · 0 评论 -
Opengl ES系列学习--莫比乌斯带
一个莫比乌斯带的shader,效果如下: Java类为GlMobiusRender,完整源码如下:package com.opengl.learn.aric;import android.content.Context;import android.opengl.GLES32;import android.opengl.GLSurfaceView;import android.util.Log;import com.opengl.learn.OpenGLUtil...原创 2020-08-29 23:06:18 · 549 阅读 · 0 评论 -
Opengl ES系列学习--太阳
继续积累Shadertoy,大家也可去Shader女神的CSDN逛逛:Shader女神。使用别人写好的shader实现的一个太阳的效果,太漂亮了!!! 该效果实现是GlSunRender类,完整源码如下:package com.opengl.learn.aric;import android.content.Context;import android.opengl.GLES32;import android.opengl.GLSurfaceView;import ...原创 2020-08-29 22:52:51 · 443 阅读 · 0 评论 -
Opengl ES系列学习--3D大海
今天又发现一些非常赞的Opengl学习网站:Shadertoy、twinklingstar,看到这些资源,真是相见恨晚啊,里面的东西真是太赞了,上一幅图大家就知道了。 怎么样?我第一眼看到这样的效果,真是被震惊到了,我操,这是什么操作,居然还能搞出来这样的效果,我的十个大拇指不由得想伸出来表达一下内心的赞。...原创 2020-08-25 00:37:25 · 567 阅读 · 0 评论 -
Opengl ES系列学习--材质
本节我们一起来学习一下材质的知识,看完本节的内容后,我们应该总结到,最终实现的效果是在上一节的基础上,把所有影响因素慢慢都加进来,考虑的更细致得到的结果。上一节我们考虑的是光的反射因素,把环境光照、漫反射光照、镜面反射光照计算到最终效果上;本节继续把物体的材质、光源的环境光照分量、漫反射分量、镜面反射分量全部都考虑进来,这样就会越来越接近实际现象。 本节最终实现的效果如下: 为了方便对比,我们画了四个立方体,每次的视口坐标调用glViewport转换了一下,关于glVi...原创 2020-08-23 01:35:30 · 405 阅读 · 0 评论 -
Opengl ES系列学习--光照基础
本节我们来学习一下光照基础的知识,理解了原作者的讲解,我们就应该能提炼出本节的重点就是冯氏光照模型。之前我们已经说过了,后面的效果实现都是把前人总结好的原理计算出来。冯氏光照模型介绍如下: 上面的四张效果图看着就非常明显了,第一张是环境光,第二张是漫反射,第三张是镜面反射,第四张是所有效果的综合,也就是我们眼睛看到的效果。颜色的处理是在片段着色器中,分别把三部分反射因子相加,然后乘以物体本身的颜色就完成了,代码实现如下: 本节我们最终实现的效果图如下: ...原创 2020-08-22 00:24:30 · 340 阅读 · 0 评论 -
Opengl ES系列学习--颜色
本节我们来学习一下颜色的知识,在看完原作者讲解的颜色的知识的基础上,只要我们理解了,应该就能提取出重点,其实本节的重点就是下面这一句话。 所以我们要作的就是计算出物体颜色和光源颜色,然后把它们两个相乘,得到的就是目标颜色了。只有清晰的明确了目标,知道我们要干什么,这样效率才能更高,不至于被方向搞乱。本节我们实现的效果如下: 我们是仿照作者的实现,加了一个橙色的光源,而且在上一节的基础上,继续使用所有的纹理,作者是先去掉,后面的章节又加上的,我们索性就直接使用了。可以...原创 2020-08-18 00:11:11 · 419 阅读 · 0 评论 -
Opengl ES系列学习--摄像机
本节我们来学习一下摄像机,原文最后作者使用按钮对场景进行移动,我们其实也可以模拟touch事件,然后计算出相应的移动距离,作用在变换矩阵上,按照这样的思路也是可以实现移动的,有兴趣的朋友可以自己实现一下。 先来看一下本节的实际效果: 看着动画的感觉,不像是摄像机在转动,倒像是场景在绕着中心点转动,这是怎么回事?这是因为我们对每个立方体都进行了平移,而且我们的lookat矩阵的目标视点是对着场景的中心点的,所以,我们把摄像机逆时针转动时,相当于场景在顺时针转动,也就是我们...原创 2020-08-13 01:13:09 · 519 阅读 · 0 评论 -
Opengl ES系列学习--坐标系统
本节我们来学习一下坐标系统,坐标系统应该是很重要的一节知识,是学习Opengl的过程中必不可少的一节课,如果能深刻的理解坐标系统,就能在复杂的实际工作中正确的把握住各种坐标运算。如下几张截图是原作者特别说明的,在大家的实际工作中,肯定可以作为标准,如果碰到类似坐标运算的问题了,第一时间过画对比看一看,对坐标系统的认识应该就会更进一步。...原创 2020-08-08 14:36:29 · 445 阅读 · 0 评论 -
Opengl ES系列学习--变换
本节我们继续学习变换一章的内容,原作者在本章内容单面讲解了大量的矩阵变换的内容,非常清晰,大家如果有兴趣研究的话,可以自己计算一下,我们就不细看了。 先来看一下我们最终实现的效果: 本小节要实现的效果相对比较简单,我们就是在上一节的基础上,加了一个变换矩阵,让我们的纹理转起来。GlMatrixRender类的完整源码如下:package com.opengl.learn.aric;import android.content.Context;import a...原创 2020-08-02 17:11:57 · 289 阅读 · 0 评论 -
Opengl ES系列学习--纹理
有时间了,就学学Opengl,很久之前就发现了一篇非常赞的Opengl教程:LearnOpengl CN,不知道为什么,之前还是可以打开的,现在电脑上却访问不了了,只能在手机上看,真是资源浪费啊!! 活到老,学到老!技术积累到一定程度后,我们必须在某个方向不断的深挖,目的就是行业顶尖的水平,大家想想,我们自己的技术能力,哪个方面能达到行业顶尖??估计没有一个人敢自信的回答,所以,还是要不断的学习。 也是基于这样的思考,自己才想着不断的学习Opengl,把这个方面的能力掌握的...原创 2020-08-02 15:57:14 · 534 阅读 · 0 评论 -
Opengl ES系列学习--glActiveTexture API使用
本节我们来看一下glDrawElementsAPI的使用,对应的代码是OpenGL\learn\src\main\java\com\opengl\learn\GlActiveTextureRender.java文件。 所有实例均有提供源码,下载地址:Opengl ES Source Code。 API中文说明:GLES2.0中文API-glActiveTextu...原创 2020-03-16 00:25:32 · 896 阅读 · 0 评论 -
Opengl ES系列学习--glViewport API使用
去年有分析了一些Opengl ES的实例,但是后面在实际的工作中,发现根基不牢,工作中使用的一些复杂场景还是理解的不够透彻,所以回过心来,必须把基础把扎实。从这节开始,我们后面对一些非常基础普通的Opengl ES API进行实际使用介绍,万丈高楼平地起,必须把基础搞扎实,我们才能一步步向上。 所有实例均有提供源码,下载地址:Opengl ES Source Code。...原创 2020-03-08 20:50:11 · 1039 阅读 · 0 评论 -
启示(信息绝对真实,无意者请勿骚扰!!!)
大家好,我们公司是专门从事Android手机研发生产的,行业龙头,因公司业务扩大,一直在要人,首选Camera方向,包括Camera APP、Qualcomm Camera HAL、MTK Camera HAL均可,其他方向也有大量需求,薪资根据能力而定,绝对优于行业水平,微=!@#=信(1==&==5!!&!!3;&;1【&】0{&}7/&...原创 2019-11-17 10:55:30 · 838 阅读 · 15 评论 -
使用Android Studio阅读整个Android源码
非常好的文章,推荐给大家!!!原创 2016-04-23 18:38:26 · 2711 阅读 · 0 评论 -
Android 8.0系统源码分析--openCamera启动过程源码分析
今年一进公司就开始搞相机开发,一直是在搞相机应用层,不过自己的学习心一直没停,闲暇之余就研究一下相机的framework、HAL层的东西,平时工作中碰到的和自己接触到的,相机中最复杂的就是预览了,有了一些体会也不想放下,所以决定写一系列关于Android相机的博客,把自己学习到的东西记录下来。 说起Android相机的东西,从应用层的角度来看,基本就是四个重要的节点了:openCame原创 2018-01-28 17:55:05 · 14621 阅读 · 6 评论 -
Android 8.0系统源码分析--startService启动过程源码分析
作过android应用开发的同事都非常清楚,android提供了四个组件Activity、Service、BroastcastReceiver、ContentProvider,分别都有不同的作用,这也给我们的应用开发提供了非常大的帮助,因为这四大组件本身就已经处理了很多的工作,我们只需要使用它就能达到成我们的目的。今天就来看一下Service这个组件,其他三个我们就不详细分析了,基本上都是相同的道原创 2018-01-27 22:53:33 · 1956 阅读 · 0 评论 -
Android 8.0系统源码分析--Activity的窗口Window对象添加过程源码分析
这节我们来看一下Activity的窗口Window对象的创建过程,Activity作为Android提供的四大组件之首,我们之所以能非常简单的使用它,就是因为它的创建过程中,framework为我们作了大量的初始化工作,包括它的窗口Window、显存Surface、事件分发的InputChannel等等非常多的工作,都在framework中为我们准备好了,所以我们这节来看一下Window对象的创建原创 2018-01-31 23:57:08 · 2750 阅读 · 0 评论 -
Android 8.0系统源码分析--Zygote启动过程分析
上一节我们详细的看了下Android应用进程的启动过程分析,知道了应用进程是由Zygote进程调用Linux的系统函数fork复制出来的,那么Zygote进程是怎么启动起来的?这节我们就来看一下Zygote进程的启动过程。 当我们的Android手机开机时,Linux的init进程会去加载init.rc配置文件,老罗博客上讲的是Android 2.3的系统,当前应该还没有64位的虚拟机原创 2018-01-06 21:27:19 · 7943 阅读 · 1 评论 -
Android 8.0系统源码分析--Looper、MessageQueue创建过程分析
android 8.0源码分析原创 2017-12-17 21:17:37 · 772 阅读 · 0 评论 -
Android 8.0系统源码分析--应用进程启动过程分析
Android 8.0源码分析原创 2017-12-24 13:05:00 · 2092 阅读 · 1 评论 -
Android 8.0系统源码分析--Message发送、处理过程源码分析
android 8.0源码分析--Looper、MessageQueue的消息循环原创 2017-12-23 16:41:40 · 1005 阅读 · 0 评论 -
Android 8.0系统源码分析--Binder进程间通信(一)
开始我们的沉淀之路,老罗的书中第二章讲的是Android HAL层的知识,而且直接自己实现了一个虚拟的freg驱动程序,后面的几节是分别从native、java层如何访问这个虚拟的驱动程序接口,我这里没有这样的环境,所以就不分析这节了,第三章的智能指针我对比8.0系统源码和老罗的书,基本修改很小,大家如果要学习的话,就直接看老罗的书吧,这也反映出一个问题,就是我们学到的知识肯定是有用的,老罗在自己原创 2017-11-24 20:44:48 · 6840 阅读 · 0 评论 -
Android 8.0系统源码分析--Binder进程间通信(二)
Android 8.0系统源码分析--Binder进程间通信(二),按照老罗书的结构,结合8.0最新源码来分析android移动操作系统。原创 2017-12-03 12:15:34 · 2093 阅读 · 0 评论 -
Android 8.0系统源码分析--Binder进程间通信(三)
android 8.0系统源码分析原创 2017-12-09 18:08:41 · 1874 阅读 · 0 评论 -
Android 8.0系统源码分析--开篇
好久没写博客了,在这里上班基本都加班,而且公司上不了外网,手机都不能带进办公室,所以就间断了。昨天中午没事翻老罗的CSDN博客,忽然发现老罗的《Android系统源代码情景分析 [罗升阳著]》一书的PDF电子版出来了,真是惊喜啊!!搞开发这么久,一直对老罗的博客情有独钟,确实写的非常好,讲的非常细致!最好的学习方法是什么?Read The Fuck Source Code!!赶紧下载下来...原创 2017-11-12 21:50:09 · 22117 阅读 · 12 评论 -
Android 8.0系统源码分析--相机createCaptureSession创建过程源码分析
上一次我们详细分析了openCamera启动过程的源码,从CameraServer进程创建了很多对象,比如CameraDeviceClient、Camera3Device、FrameProcessorBase,而真正打开相机还是在驱动层中上电后才完成的,有时候真想把公司的系统组件和芯片组件的源码拷回来,这样就能看到完整的过程了,但是还是不敢,哈哈哈!华为手机是仿照高通,和CameraSe...原创 2018-02-25 20:53:01 · 16064 阅读 · 12 评论 -
Android 8.0系统源码分析--openCamera(HAL)启动过程源码分析
前面我们详细分析了从应用层调用CameraManager的openCamera的方法来打开相机的逻辑,上次的分析我们来到了CameraServer进程当中,但是还没有真正看到open操作设备节点来实现真正打开的逻辑,遗留的问题也就是从frameworks\av\services\camera\libcameraservice\device3\Camera3Device.cpp文件中的st...原创 2018-05-13 09:59:40 · 7981 阅读 · 3 评论 -
Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析
相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline、接各种算法的Node、再往下的ISP、3A、Driver,真是太大了,想把它搞懂真不是个简单的事情。不过我们奔着要把它搞懂的目标,一点点的啃,弄懂一点少一点,我们的功力也在不断的前进中一步步的增强。 本节,我...原创 2019-06-16 21:20:38 · 7084 阅读 · 9 评论 -
Android 8.0系统源码分析--Camera RequestThread预览循环源码分析
本节我们来看一下Camera预览是如何循环的。我自己使用的Android8.0的系统源码是通过百度云盘分享的,大家可从Android 8.0系统源码分析--开篇中下载,百度云盘的下载链接和密码都有。 大家使用API2开发相机APP时都清楚,我们起预览时调用CameraCaptureSession类的setRepeatingRequest方法,该方法的实现是由CameraCap...原创 2019-06-16 15:36:19 · 6322 阅读 · 10 评论 -
Android手机对手机adb环境搭建
公司项目需求,要用Nexus 5X手机作为测试工具,连接Linux设备,然后在手机上执行ps、find、grep、cat等Linux系统命令查询Linux设备上的进程、日志等操作,通过这两句话,不知道大家有没有理解清楚需求,一开始让我搞,直接蒙了,从来执行adb命令都是在电脑上,因为电脑可以安装SDK自带的adb.exe,用它才能连接手机,还从来没搞过在手机上执行adb,但是要实现这样的...原创 2019-05-14 16:44:28 · 7348 阅读 · 1 评论 -
Opengl ES系列学习--顶点着色器
本节我们继续来看一下《OPENGL ES 3.0编程指南 原书第2版(中文版)》书中第8章的内容,PDF下载地址:OPENGL ES 3.0编程指南 原书第2版(中文版),代码下载地址:Opengl ES Source Code。该书中好像没有对Demo的代码进行讲解,全书的重点全部都集中在Opengl ES本身,而实现出来的实例代码讲解的很少,作为初学者,理解起来确实比较费劲,这也是我...原创 2019-05-07 14:57:15 · 708 阅读 · 0 评论 -
Opengl ES系列学习--顶点属性、顶点数组和缓冲区对象
本节我们继续来看一下《OPENGL ES 3.0编程指南 原书第2版(中文版)》书中第6章的内容,PDF下载地址:OPENGL ES 3.0编程指南 原书第2版(中文版),代码下载地址:Opengl ES Source Code。本书中第3、4、5章讲解的是Opengl ES着色器语言的语法知识,没有实例,不过这些语法也是我们掌握Opengl ES的硬功底,万丈高楼平地起,只有基础扎实,...原创 2019-05-06 15:09:50 · 985 阅读 · 0 评论 -
Opengl ES系列学习--创建动态壁纸
本节我们在上一节的基础上继续完成动态壁纸功能,我们要分析的目标就是《OpenGL ES应用开发实践指南 Android卷》书中第14章实现的最终的结果,代码下载请点击:Opengl ES Source Code,该Git库中的livewallpaperModule就是我们本节要分析的目标,先看下本节最终实现的结果。 最终的效果,就是把我们上一节实现的结果作为...原创 2019-04-30 10:59:57 · 739 阅读 · 2 评论 -
Opengl ES系列学习--你好,三角形
看完了Opengl ES 2.0,我们再来看一下3.0的内容,PDF下载地址:OPENGL ES 3.0编程指南 原书第2版(中文版),3.0原书中的作者应该是搞C++开发的,所有的实现都是基于C++,当然也有Java语言的,原书所有代码下载地址:OpenGL ES 3.0中文版所有示例代码,我自己只是将Java语言整理了一下。我们还是对着书,一节一节的分析所有的内容。本节要看的就是该书...原创 2019-05-05 11:45:29 · 439 阅读 · 0 评论 -
Opengl ES系列学习--点亮世界
本节我们在上一节的基础上继续添加光照,我们要分析的目标就是《OpenGL ES应用开发实践指南 Android卷》书中第13章实现的最终的结果,代码下载请点击:Opengl ES Source Code,该Git库中的lightingModule就是我们本节要分析的目标,先看下本节最终实现的结果。 在上一节的基础上,把天空盒换成了一个夜晚的天空盒,同时增加了光照,三个粒...原创 2019-04-29 18:17:13 · 400 阅读 · 0 评论 -
Opengl ES系列学习--增加地形
本节我们在上一节的基础上继续添加地形图功能,我们要分析的目标就是《OpenGL ES应用开发实践指南 Android卷》书中第12章实现的最终的结果,代码下载请点击:Opengl ES Source Code,该Git库中的heightmapModule就是我们本节要分析的目标,先看下本节最终实现的结果。 可以看到,地形图中有高有低,是用绿色来表示的,最接近底部的颜...原创 2019-04-25 18:12:47 · 572 阅读 · 0 评论 -
Android 7.0修改PMS逻辑添加权限白名单
今天有任务安排需要实现给任何一个应用在不动态申请权限的情况下,实现权限赋予,大体知道应用权限的赋予逻辑是在PMS中,于是大概研究了下,最终的手段就是在install安装时,就把应用程序AndroidManifest中请求的权限赋予它,但是时间有限,跟踪了下应用安装的逻辑,往上走还是非常复杂,就暂且放下了。 解决方案: 在PMS的grantPermissionsLPw方法...原创 2018-09-29 19:40:54 · 3173 阅读 · 0 评论 -
Android 7.0系统源码下添加共享库
今天的任务从早上搞到现在,才算完成,本来以为比较简单,就是出一个Demo,将实际业务的逻辑封装成so库,放在系统层,对上层不暴露任何东西,中间就一层JNI调用,原本以为很简单,但是由于自己的一个坏习惯,折腾了一天。将处理过程详细记录下来,同时吸取教训,也希望能给大家带来帮助。 JNI的封装很简单,代码就不上了,在Android7.0源码目录下添加共享库的过程,也有其他网友提到...原创 2018-09-20 22:41:03 · 4760 阅读 · 0 评论