自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (6)
  • 收藏
  • 关注

原创 android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED

DEQUEUED :缓冲区被生产者获取,正在填充数据(如 GPU 渲染或 Camera 写入) dequeueBuffer() 应用调用 Canvas.lock() 或 OpenGL 渲染前。ACQUIRED :消费者(SurfaceFlinger)已获取缓冲区,准备合成或显示 acquireBuffer() SurfaceFlinger 正在合成该帧。消费者:SurfaceFlinger 通过 acquireBuffer 获取已填充的缓冲区并合成显示。VSync 信号丢失或合成耗时过长。

2025-04-12 15:41:55 138

原创 android display 笔记(十二)CPU,GPU,DPU的区别

硬件加速合成:替代 GPU 完成 Overlay、缩放、旋转等操作。图形渲染:顶点着色、像素填充、光线追踪。低延迟:优先快速响应单线程任务。需要并行计算/图形 → GPU。需要通用计算 → CPU。需要显示优化 → DPU。

2025-04-12 15:34:47 131

原创 android display 笔记(十一)surfaceflinger 如何将图层传到lcd驱动的呢?

需 GPU 合成的图层:标记为 HWC2::Composition::Client,由 SurfaceFlinger 通过 OpenGL ES/Vulkan 渲染到临时缓冲区。LCD 驱动 从显存(Framebuffer)或 Overlay 缓冲区读取像素数据,通过 MIPI-DSI/RGB 接口 输出到屏幕。支持硬件合成的图层:标记为 HWC2::Composition::Device(由显示控制器直接处理)。配置 CRTC(显示控制器)的时序参数(VSync/HSync/像素时钟)。

2025-04-12 15:32:20 335

原创 android display 笔记(十)surfaceflinger与HWC的关系

在 Android 图形系统中,SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件,共同负责屏幕内容的合成与显示。硬件合成(Overlay):由显示控制器(Display Controller)直接处理(性能最优)。GPU合成:无法硬件合成时(如复杂变换),回退到 GPU 渲染(通过 OpenGL ES)。SurfaceFlinger 根据 HWC 的能力调整图层分配(如避免频繁切换合成方式)。混合合成:部分图层用 Overlay,部分用 GPU。

2025-04-12 15:27:49 257

原创 android display 笔记(九)三重缓冲杂谈

双缓存意味着要使用两个缓存区,其中一个称为 Front Buffer,另外一个称为 Back Buffer。UI 总是先在 Back Buffer 中绘制,然后再和 Front Buffer 交换,渲染到显示设备中。理想情况下,这样一个刷新会在 16ms 内完成。那什么是Triple Buffer呢?

2025-03-19 11:33:50 147

原创 android display 笔记(八)WMS与SurfaceFlinger交互

在Android系统中由WindowManagerService也就是WMS承担窗口位置的管理。

2024-09-04 14:58:41 684 1

原创 android display 笔记(七)图层

SurfaceControl和Surface都可以表示窗口,窗口管理服务通过SurfaceControl控制图层的状态,应用进程通过Surface向图层传送缓冲数据。创建图层是在SurfaceComposerClient.cpp中的createSurface中,生产图形需要先创建窗口,创建窗口时会请求surfaceflinger创建图层。然后对mStatus进行判断,如果是NO_ERROR,则调用mClient的接口createSurface,并返回前面声明的result。

2024-08-30 09:55:15 326

原创 android display 笔记(六)SurfaceFlinger初始化

getComposerService():向服务管理进程查询得到ISurfaceComposer对象,客户进程可以通过该对象向Surfaceflinger发送请求。什么是客户进程,指的是使用SurfaceFlinger服务的进程,通常是通过SurfaceComposerClient与SurfaceFlinger进程交互。在/frameworks/native/services/surfaceflinger/路径下可以看到 与surfaceflinger 很多相关的文件。创建新线程并加入到线程池。

2024-08-13 14:16:31 605

原创 android display 笔记(五)HWC(Hardware Composer)

简单来说HWC是用来合成图形和显示图形的,可以把多个图形缓存传给硬件混合渲染器,让硬件混合渲染器执行合成操作,显示图形就是直接将图形缓存显示到屏幕。IComposer 用于客户进程与HWC进程建立通信链接,createClient 用于创建IComposerClient 的对象。在IComposerClient接口类中通过registerCallback注册回调,客户进程注册回调后就可以使用HWC进程事件。----------------后续有时间再补充。onRefresh:通知客户进程提供新的帧缓存。

2024-08-08 17:15:02 810

原创 android display 笔记(四)hardware 硬件抽象层

源码:android14硬件抽象层的接口定义在 hardware.h定义了以下三个结构体其中还有 hw_get_module方法,该方法用于获取模块第一个参数获取模块的 id,根据id查找对应库文件,匹配成功后通过第二个参数返回模块对象。

2024-07-29 15:54:03 467

原创 android framework input 及多指协议

input问题排查,如果数据能打印出来,则是framework 问题,如果没有数据打印出来,则要看驱动问题。ABS_MT_SLOT ,其value 代表手指id,可以代表不同的手指。每个slot与一个id对应,一个非负数表一此接触,-1表示接触结束。以上数据格式:时间,具体节点文件名,事件类型,事件值。SYN_REPORT:代表一个事件的结束。0004/0005:代表一个事件的开始。触碰按键,其值是DOWN或者UP。相对于屏幕中心的x,y坐标。

2024-06-03 15:04:17 335 1

转载 Android BufferQueue

图形数据的消费者也可以不用等BufferQueue的回调通知,每次都从BufferQueue中尝试获取数据,获取失败则尝试,只是这样效率比较低,需要不断的轮训BufferQueue(因为BufferQueue有同步阻塞和非同步阻塞两种机种,在非同步阻塞机制下获取数据失败不会阻塞该线程直到有数据才唤醒该线程,而是直接返回-1)。在新的GraphicBuffer入队BufferQueue时,BufferQueue会通过回调通知图形数据的消费者,有新的图形数据被生产出来了。

2024-05-29 17:04:46 174

原创 android display 笔记(三)WMS

总结,WMS的main方法在startOtherServices中,而startOtherServices在SystemServer的run方法中,运行在system_server线程中。该代码执行了WMS的main方法,会在内部创建一个WMS。其中有一个参数inputManager也是在startOtherServices中创建的,如下。回到上述的WindowManagerService main中。在SystemServer中的main方法中,调用run方法。用来记录学习wms,后续会一点一点更新。

2023-11-03 19:43:00 428

原创 android display笔记(二)winscope的使用

跟踪记录会被写入 /data/misc/wmtrace/wm_trace.winscope 和 /data/misc/wmtrace/layers_trace.winscope,同时还会包含在错误报告中。通常使用prebuilts/misc/common/winscope下的winscope.html。窗口转换完成后,打开快捷设置,然后点按 Winscope 跟踪记录以停用跟踪记录。依次转到开发者选项 > 快捷设置开发者图块。点按 Winscope 跟踪以启用跟踪。点击Add FILE。

2023-10-20 11:03:31 4119

原创 android display笔记(一)Window以及WindowManager

**什么时候会用到window,当桌面需要显示一个类似与悬浮窗的东西,那就需要用到Window,而创建window则就需要windowManager ***

2023-10-19 20:22:45 519

原创 dumpsys window

dump出当前所有的窗口信息。查询当前活动包名以及类名。

2023-08-14 10:57:38 418

转载 闪屏问题常见处理思路

严格从技术来说,闪屏问题不能归为一类问题,他是因为屏幕快速变化导致用户看起来显示不正常的问题(很多测试者甚至会将花屏问题当做闪屏问题,这里不做讨论).它可能是多种完全不同的原因导致的,硬件问题,驱动问题,绘制问题,合成问题,窗口调度问题,activity问题,以及app本身的逻辑问题都有可能导致用户看起来屏幕闪屏的感觉,其中百分之九十以上闪屏的问题是由后三种问题导致的.闪屏问题作为Android的一类常见问题,原因复杂多样.我们在这里整理一下如何分析闪屏问题,找到具体导致闪屏问题的原因.

2023-06-26 20:23:45 1295

原创 android LCD背光服务修改自适应背光最低,最高亮度

文件路径:/device/sprd/sharkl3/moverlay/device/base/frameworks/base/core/res/res/values/config.xml。在学习lcd背光服务的时候发现的背光亮度默认修改的文件,并全编了一下试试,结果成功了,现在已经把亮度调到最低了,但还是很亮。可以看到minimumBacklight最小背光值在配置文件中,默认的是6,我们进行修改即可。BrightnessMappingStrategy 亮度映射策略,

2022-10-08 17:52:40 1145

原创 Settings动态添加一二级菜单

上文:https://blog.youkuaiyun.com/u013574207/article/details/127102294。首先先自定义一个top_level_settings_custom.xml文件。如top_level_settings_custom.xml。在TopLevelSettings.java。然后在需要触发的地方添加。

2022-09-29 11:27:40 814

原创 【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

首先会去调用父类的onCreatePreferences(Bundle savedInstanceState, String rootKey)方法,然后调用addPreferencesFromResource(R.xml.assistant_function)方法(这个方法是父类的)加载二级菜单的xml配置文件,实现创建二级菜单,这个配置文件路径在res/xml/assistant_function.xml。controller:该item的控制器,控制它的内容展示,是否可用,也可以控制它的点击事件等。

2022-09-29 11:04:31 1433

原创 Android状态栏添加快捷开关(Tile)

快捷开发读取的是config.xml配置文件,可以打log看输出的tile顺序是和那个配置文件的对上的,一般是读取。2、在case的条件判断中直接return null;

2022-09-26 17:49:22 1959

原创 修改systemui背景圆角大小

item项,@dimen/config_dialogCornerRadius所@dimen的值是不同的,最后发现当前主题引用的是config.xml全局配置文件的config_dialogCornerRadius值,该值写在/franeworks/base/core/res/res/values/config.xml。主题的路径是:/frantworks/base/core/res/res/values/目录下有多个theme.xml文件,不同的主题其。adb reboot完成重启。

2022-09-22 11:06:44 641

原创 RecyclerView的点击事件运用(android仿电话app)

在上一篇的文章中,主要对适配器与MainActivity进行了修改。

2022-09-05 17:33:08 680

原创 android的本地通讯录获取以及RecyclerView展示

获取本地通讯录以及RecyclerView的运用

2022-09-02 16:59:45 1299

原创 android广播机制

android广播机制小demo

2022-09-01 09:54:40 825

原创 Settings源码分析随记(资源覆盖,Android默认亮度修改,Android默认息屏超时时间修改)

Settings源码

2022-08-18 15:22:15 946

原创 【Settings】push到手机

adb push到手机

2022-08-18 09:57:52 521

原创 Linux Git命令修改补充

git查看修改

2022-08-17 11:32:34 260

原创 android蓝牙开发的一个小Dome

实现蓝牙开发的多个功能> BluetoothAdapter 蓝牙适配器,即该类里面包含了蓝牙使用中常用到的一些API。 BroadcastReceiver> 广播接收者,不难猜测,蓝牙设备开启或者关闭、搜索到周边设备就要来通知应用,那么Android系统就会以广播的方式来通知。> BluetoothDevice> 蓝牙设备,即一个相当于蓝牙设备的类,实现了Parcelable接口,用于Android的IPC通信机制。里面实在广播时发送的蓝牙的相关信息:蓝牙名称,地址,类型和uuid等。...

2022-07-27 17:54:34 553

原创 Git|安卓全编|单编|adb|抓取日志等笔记简介

安卓手机编译等

2022-07-16 21:06:15 515

原创 Linux基础、vim、find命令等

rm命令 – 删除文件或目录rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。语法格式:rm [参数] 文件常用参数:-f 强制删除(不二次询问)-i 删除前会询问用户是

2022-07-12 14:25:12 1242

原创 cp命令 – 复制文件或目录|rm命令 – 删除文件或目录

rm命令 – 删除文件或目录rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。语法格式:rm [参数] 文件常用参数:-f 强制删除(不二次询问)-i 删除前会询问用户是

2022-07-11 17:11:16 710

原创 mkdir命令 – 创建目录文件

建立一个目录mkdir dir1设置一个700权限,不让除所有主以外任何人读,写,执行它mkdir -m 700 dir2当前目录中,一次创建多个目录文件mkdir di语法格式:cd [参数] [目录名]常用参数:-P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录-L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录-- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录~ 切换至当前用户目录.. 切换至当前目

2022-07-11 14:16:13 966

原创 cd命令 – 切换目录

cd命令来自于英文词组”change directory“的缩写,其功能是用于更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。语法格式:cd [参数] [目录名]常用参数:-P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录-L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录-- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录~ 切换至当前用户目录.. 切换至当前目

2022-07-11 14:00:34 8346

原创 rm命令 – 删除文件或目录

linux

2022-07-09 15:07:48 5340

原创 linux常见的操作命令--文件管理

linux常见命令1

2022-07-09 14:47:13 234

原创 重温安卓小控件练习(一)

安卓控件的简单练习

2022-06-03 17:47:56 286

原创 (毕设课设)基于SSM的食堂订餐小程序(微信小程序+后台管理系统)

阐述了基于SSM的食堂订餐小程序系统的设计与实现的过程,运用了B/S架构,JAVA的SSM框架,前后端分离等设计模式,使用了mysql管理数据库,微信开发者工具开发小程序前端,eclipse开发系统后端,采用了前后端交互技术构建了一个管理员、商家和用户三端共同使用的系统,给同学们提供了一个更为便捷的订餐方式,给商家提供了一个更为高效的售卖途径。食堂订餐小程序的制定主要是详尽考虑到系统软件要保持的功能,明确要保持的功能,随后设计方案页面.

2022-05-30 22:02:05 3001

原创 PPT模板(毕业答辩55套+扁平风格11套+创意风格13套)79套模板

PPT模板(毕业答辩55套+扁平风格11套+创意风格13套)79套模板最近临近毕业,毕业答辩的时候发现很多ppt下载都很麻烦,而且找不到优质的,我收集了一下,整理到下面了,大家有用的可以拿去用ppt是指微软公司的演示文稿软件。用户可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。利用ppt不仅可以创建演示文稿,还可以在互联网上召开面对面会议、远程会议或在网上给观众展示演示文稿。演示文稿中的每一页就叫幻灯片。ppt是指微软公司的演示文稿软件。一套完整

2022-05-20 20:49:24 811 1

原创 【毕设课设】【毕设课设】JAVA web健身房管理系统(源码+文档+数据库)

(1)本系统使用数据库为MySql5.5.40,使用时向数据库导入文件gym-mysql.sql。(2)可登陆的管理员登录账号:20190001,密码为:123123;2) 程序说明(3)java所用的jdk版本为:JDK1.8.0_251。(4)web程序运行所用的服务器为tomcat-7.0.103,发布成功后在浏览器输入:localhost:8080,来访问系统。管理员登陆界面

2022-05-19 19:26:59 2420

学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析

学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析学习目前企业经常使用的Linux基本操作命令 深度学习Linux内核源码及源码剖析

2023-07-12

LINUX内核同步、信号、内存、调度、文件系统、网络系统

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源

2023-07-11

【毕设课设】学生兴趣班管理系统 JAVA+SSM+Layui前端+Mysql

兴趣班管理系统使用了B/S架构,编程语言为Java语言,项目的框架为SSM框架;Layui前端框架完成前后端的交互;数据库为MySQL5.0。 本项目适用于毕设,课设,自学以及二次开发等。系统实现了七个模块,登陆注册模块实现了学生,教师,与超级管理的登录,以及学生注册功能的实现;用户信息管理模块实现了管理员对学生,教师等信息进行增删改查等操作的实现,以及各个角色对自己信息的的查看;审批管理模块实现了从学生开始的请假事务处理,到教师,管理员审批的完整过程;成绩批改模块提供了教师对课程下学生的打分;兴趣班管理模块实现了对兴趣,以及兴趣下的班级,再对班级下的课程进行依次管理,最后通过开课管理进行关联;数据统计模块实现了在首页展示兴趣班全部的数据可视化显示;管理员模块实现了权限的分配与管理员账户的增删改查。

2022-05-19

毕设课设SSM学生信息教务学籍管理系统(源码+数据库文件+42节全套该软件从零到开发完成全套视频课程)

学生信息教务学籍管理系统使用了B/S架构,编程语言为Java语言,项目的框架为SSM框架,Layui前端框架完成前后端的交互;数据库为MySQL。 学生信息教务学籍管理系统设计实现了七个模块,登陆注册模块实现了学生,教师,与超级管理的登录,以及学生注册功能的实现;用户信息管理模块实现了管理员对学生,教师等信息进行增删改查等操作的实现,以及各个角色对自己信息的的查看;审批管理模块实现了从学生开始的请假事务处理,到教师,管理员审批的完整过程;成绩批改模块提供了教师对课程下学生的打分;兴趣班管理模块实现了对兴趣,以及兴趣下的班级,再对班级下的课程进行依次管理,最后通过开课管理进行关联;数据统计模块实现了在首页展示兴趣班全部的数据可视化显示;管理员模块实现了权限的分配与管理员账户的增删改查。

2022-05-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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