- 博客(458)
- 资源 (145)
- 问答 (2)
- 收藏
- 关注
原创 驱动-传参实验-ioctl
用户如果要对外设进行操作,对应的设备驱动不仅要具备读写的能力,还需要对硬件进行控制。以点亮LED灯驱动实验为例,应用程序通过向内核空间写入1和0从而控制LED灯的亮灭,但是读写操作主要是数据流对数据进行操作,而一些复杂的控制通常需要非数据操作,这时本章节要学习的ioctl函数就闪耀登场了。
2025-05-16 11:05:17
169
原创 驱动-Linux定时-timer_list
硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始的起点, 以未来的某一时刻为计时的终点) , 内核只有在系统定时器的帮助下才能计算和管理时间, 但是内核定时器的精度并不高, 所以不能作为高精度定时器使用。并且内核定时器的运行没有周期性, 到达计时终点后会自动关闭。如果要实现周期性定时, 就要在定时处理函数中重新开启定时器。Linux 内核中使用 timer_list 结构体表示内核定时器, 该结构体定义在“内核源码/include/li。
2025-05-15 17:18:24
745
原创 驱动-互斥锁
将信号量量值设置为 1, 最终实现的就是互斥效果, 这里要了解的互斥锁功能相同, 虽然两者功能相同但是具体的实现方式是不同的, 但是使用互斥锁效率更高、更简洁, 所以如果使用到的信号量“量值”为 1,一般将其修改为使用互斥锁实现。当有多个线程几乎同时修改某一个共享数据的时候, 需要进行同步控制。线程同步能够保证多个线程安全访问竞争资源, 最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态: 锁定或者非锁定。某个线程要更改共享数据时, 先将其锁定, 此时资源的状态为“锁定” , 其他线程不能更改;
2025-05-09 18:07:11
956
原创 驱动-信号量
信号量是操作系统中最典型的用于同步和互斥的手段, 本质上是一个全局变量, 信号量的值表示控制访问资源的线程数,可以根据实际情况来自行设置, 如果在初始化的时候将信号量量值设置为大于 1, 那么这个信号量就是计数型信号量,允许多个线程同时访问共享资源。如果将信号量量值设置为 1, 那么这个信号量就是二值信号量, 同一时间内只允许一个线程访问共享资源,注意!信号量的值不能小于 0。当信号量的值为 0 时, 想访问共享资源的线程必须等待, 直到信号量大于 0 时,等待的线程才可以访问。
2025-05-09 15:56:52
755
原创 Launcher3-实现家长管控-儿童模式-老人模式
借助之前文章分析,开机自启应用的一个逻辑,判断是否设置过模式【开机自启APP】+ HOME 按键监听 来实现逻辑默认的Launcher 是 安卓自带的Launcher3. 这篇文章借助于系统实现了功能。如果Launcher 是第三方应用自己开发,则在其它Launcher 中实现逻辑即可。
2025-04-29 13:48:43
708
原创 MTKAndroid12-13-开机应用自启功能实现
这里从系统角度 给出了应用自启的一个解决方案,建议不要用开机广播实现涉及到的知识点需要了解基本的Launcher3 源码 和 Settings.System, Settings.Secure和Settings.Global存储的应用。
2025-04-28 17:46:23
1085
原创 MTK Android12-13 App卸载加锁
多分析源码,看流程看业务MTK Android12 安装app添加密码锁限制PMS 本身功能比较多,代码量大,多打日志看流程。用 IDE 开发工具查看源码,提高代码阅读效率。
2025-04-28 12:16:20
720
原创 Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现
实现了MTK Android13 平台下默认图片大小的逻辑分析了解决问题的思路,源码分析流程建议对Camera2 相关知识需要一定的了解最好在查看源码的过程中,难免找不到关键字,不知道修改哪里。可以借助IDE- AS VS 操作,方便定位源码位置。
2025-04-27 11:46:17
1022
原创 MTKAndroid13-Launcher3 屏蔽部分app不让显示
这个需求解决方案,完全根据代码找到并进行修改实现,思路还是很清晰的建议多看看Launcher 相关基础知识,对业务和流程分析非常有好处的。
2025-04-25 14:09:04
745
原创 驱动-自旋锁死锁
通过程序验证,和自旋锁死锁 有了初步认识为什么会死锁,为什么之前的自旋锁环境没有死锁,这个地方需要思考下。指定了CPU、内核睡眠等待、其它进程重复获得自旋锁等原因造成的自旋锁的实际案例和规避死锁,后面再进一步理解的要。
2025-04-19 12:56:11
832
原创 驱动-并发与竞争
并发与竞争这么多年接触下来,操作系统下 不同的编程语言都有对应的 并发、并行、线程、进程、同步、异步一说。这些核心本质其实是操作系>统的机制。那么不同开发语言下面对应的形态不一样而已,表现形式不一样,但是基本概念、实现原理 都是基于操作系统的。在上学课本上面操作系统学科里面 应该是第一次接触进程、线程、这些基本理论的。这里我们在驱动层面 理解 实验。
2025-04-17 11:19:06
765
原创 驱动-兼容不同设备-container_of
本篇其实还是对以前技术的总结,这里着重用到了函数 container_of,有点面向对象的意思。这里适配不同的驱动设备只是一个案例而已。
2025-04-16 00:15:00
643
原创 驱动-文件私有数据
Linux 中并没有明确规定要使用文件私有数据, 但是在 linux 驱动源码中, 广泛使用了文件私有数据, 这是 Linux 驱动遵循的“潜规则” , 实际上也体现了 Linux 面向对象的思想。structfile 结构体中专门为用户留了一个域用于定义私有数据这里对私有数据 结构体 file,通过它实现了了私有数据的共享,file 在open 、read、write 等文件操作中共享,利用共享的私有数据 定义的又是指针类型,然后封装数据,实现效果的。
2025-04-15 01:00:00
650
原创 MTK Android12-13 -Intent Filter Verification Service 停止运行
分析源码、参考资料解决 Intent Filter Verification Service 停止运行 错误这里其实其实延伸来看就是屏蔽部分包名ANR、崩溃弹框的解决方案。
2025-04-15 00:15:00
1424
2
原创 开源项目Syncthing-Android环境搭建与编译
自己花了好几周,找了好多资料,测试无数测最终解决了编译问题:其实就是两个大问题,需要看到具体日志,然后解决。github 依赖的资源无法访问,需要解决ubuntu 访问github 问题,修改dns 路由解决go 在编译过程中编译不成功,需要解决网络接口不可达,设置go 代理来解决。
2025-04-12 12:04:23
1140
原创 驱动-内核空间和用户空间数据交换
copy_from_user 和 copy_to_user 是 Linux 内核中用于在用户空间和内核空间之间安全传输数据的两个重要函数。内核和用户态数据传递就是通过两个方法调用来实现,回调到用户态其实就是指针传递。
2025-04-12 00:15:00
1157
原创 驱动-杂项设备
看杂项设备还是要和标准字符设备对比来看,主设备号固定为10,次设备号动态分配,简化了字符设备驱动的注册流程,适用于功能简单的设备杂项设备也有自己的结构体miscdevice 、file_operations ,却别与标准字符设备的 设备号结构体dev_t ,注册的字符设备结构体cdev ,文件操作集合结构体file_operations。
2025-04-11 09:00:33
677
原创 驱动-字符设备驱动框架
这里是对字符设备的一个总结,前面知识的进一步理解字符设备最终通过 文件结构体 file_operations 来实现,系统和驱动之间文件操作方法的映射。
2025-04-11 00:15:00
933
原创 MTK-删除设置首页菜单项
实现屏蔽系统设置中壁纸菜单的需求,了解系统设置一级菜单的加载显示原理这里设计到的相关内容也是设置里面需要重点掌握的基础知识。
2025-04-09 12:18:28
837
原创 驱动-创建设备节点
字符设备知识点中的 设备节点创建内容熟悉结合以前的知识,字符设备设备号申请,字符设备注册内容进一步熟悉设备注册、类、设备创建后 在驱动卸载的时候记得 卸载。
2025-04-09 00:15:00
658
原创 MTK-Android12-13 屏幕永不休眠功能实现
这里重点是PMS 在息屏时间上面的一个功能分析关联到PMS 里面实现的另外一个功能 屏保功能 都是跟息屏相关,部分逻辑业务关联的对于默认息屏时间,这里属于新增息屏时间选项的一个功能。如果需要新增其它息屏时间选项,只需要在修改息屏时间源即可 就 不需要修改PMS了。
2025-04-08 12:18:32
1520
原创 MTK-Android12-13 修改默认息屏时间
实现需求很简单的,找到对应配置即可如果需要了解实现业务、逻辑,还需要进一步看一看代码流程和代码思路,在代码里面找答案。
2025-04-08 01:00:00
1881
原创 驱动-注册字符设备
字符设备号申请-字符设备注册 基本知识进一步熟悉字符设备注册几个函数要掌握 cdev_init - cdev_add - cdev_del涉及到的结构体 需要理解,后面才能举一反三,接下来还有其它基本知识需要掌握。
2025-04-07 17:59:18
589
原创 驱动模块传参实验
驱动传参,先声明方法,如上是基本数据类型,声明出来 module_param,并给类型和权限【一般就写0644,对于新手而言】传参引入的头文件是 <linux/module.h> ,不要写成了 <linux/moduleparam.h>,或者同时存在时候规避一下,不然引用头文件加载同一个方法导致传参失败boolean 类型传参,实际传递参数是0 和1,如果用true 和 false 就会失败的,系统不认识。如上实验打印信息。
2025-04-03 14:28:38
938
原创 Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))
所以,整套流程分析下来,设置默认App,这里HomeLauncher 举例,核心逻辑就是给包名一个role 权限,然后写入到文件,最后同步一次,通知系统。如上分析了一整套默认Launcher 的代码逻辑业务,同理对于默认浏览器、短信、打电话等完全适用。通过反射实现 想要的功能,反射RoleManager 类,的addRoleHolderAsUser 方法比较合适,而且有回调。整个流程里面发现其它类的调用并不合适。
2025-03-27 19:15:39
1186
原创 MTK平台 Android12-Android13 默认搜狗输入法
常用客需功能,仅供参考,在MTK平台上面的实践,在RK平台上面只有内置方式不一致而已,默认方式和授权其实一样的。这里只是搜狗输入法的默认方式一次探讨,其它输入法默认 思路完全一样。每种输入法有自己优劣,具体场景具体客需具体对待。
2025-03-25 19:00:00
1080
原创 MTK Android12-Android13 设置系统默认语言
上面看到PRODUCT_LOCALES 引用地方, 赋值了PRODUCT_DEFAULT_LOCALE 变量,其实调用了方法get-default-product-locale 传递了参数 PRODUCT_LOCALES,这里就是 变量 PRODUCT_DEFAULT_LOCALE 的定义接下来其实就要继续看 变量PRODUCT_DEFAULT_LOCALE 在哪里引用 已经 get-default-product-locale 方法说明。
2025-03-25 18:34:49
1087
原创 Android11-12-13 替换系统默认壁纸
针对客户定制的壁纸,简要总结一下,梳理知识。默认壁纸替换,结合之前壁纸设置都是基本知识点。关联的开机动画其实都是相关的基本知识,常见的客需。
2025-03-24 20:58:32
697
原创 Android 静态壁纸设置实现方案
这里实现了静态壁纸设置的方法,就是一个反射或者api 调用。实际 逻辑比较简单的这里只是从系统app WallpaperPicker,通过界面,反推实现设置静态壁纸的逻辑和分析代码层面的流程和业务。实际上 WallpaperPicker App有很多设计思想和架构设计,这里暂不深究。如果客户定制,需要动态壁纸功能。这里暂不分析,后续有机会实现下,暂不提供解决方案。
2025-03-24 20:09:20
894
原创 Camera2 实现重力感应四个方向调试相机预览
Camera2 实现基本API操作重力感应四个方向适配,注意显示UI组件几个必备操作:显示大小、缩放、旋转、旋转位置x、y作为一个笔记篇,使用地方蛮多的,简单总结核心基本代码如下static {@Overridefinish();
2025-03-22 18:38:01
1225
原创 RK平台下Buildroot驱动编译环境入门
这里总结下基本的核心步骤VM安装,注意内存设置VM上面安装ubuntu ,提前准备.iso 镜像ubuntu环境准备。install.sh 编译环境准备、设置中文输入法、设置源依赖仓库环境 阿里的、设置VMtools 、设置共享盘 方便共享编译文件准备编译Buildroot, 设置内存13-14G,预留部分。编译过程中不可操作电脑。编译成功后,重设VM内存8G左右不管你编译什么系统,编译脚本不一样,环境配置需求不一样。但是ubuntu 安装基本一致,然后就是搭建编译环境的事情了。
2025-03-22 10:59:51
722
原创 MTKAndroid12 解决SystemUI下拉框中,长按WIFI图标会导致崩溃问题
通过这里的笔记学习和相关资料参考搞清楚Handler、Loop 的基本原理 相关原理不复杂需要掌握基本知识;搞清楚Looper.loop Lopper.prepare、Loop.getMainLooper 这些方法的使用。
2025-03-22 10:57:19
874
SystemUI 截屏快捷功能添加
2024-08-12
SystemUI QS 面板新增截屏功能按钮资源代码
2024-08-11
RK3568源码编译手册:Android11、12源码;Linux、Linux-5.10内核源码
2024-08-07
3568开发板驱动开发指南
2024-08-07
编辑器 Notepad++.zip
2020-03-28
springboot2_mybatis_durid_pager.zip
2020-02-02
springbootstudy.zip
2020-01-31
cookie_session.zip
2019-11-07
Android声音模式定制.rar
2019-08-28
系统签名.rar
2019-08-21
USBCamera-Camera1 预览、拍照、录像
2025-03-07
MTK Android12/13 系统设置 适配遥控器
2025-01-13
日常使用属性配置文件文件-device.mk-gms.mk.zip
2024-12-12
开机向导源码: 2套开机向导源码+MTK 开机向导定制思路指导
2024-12-11
开机向导定制资源,自定义开机向导资源apk、开机向导apk
2024-12-10
Framework开机自启服务-应用-自动执行-循环检测功能
2024-12-04
定时开关机功能,实现定时开关机功能
2024-10-21
TurnOffReboot.zip Android 实现重启、关机 功能
2024-09-15
MTKCamera预览、成像、拉伸代码简要片段
2024-09-10
无障碍服务工具类,在源码基础上添加日志,方便check 流程
2024-08-16
Rk Android12 Setting 源代码
2024-08-15
去除开机动画结束后显示正在启动;去掉开机后进入Launcher前黑屏;延时实现开机动画播放完全
2024-08-15
Rk3568 Android12 SystemUI 源码
2024-08-13
手环数据采集(心率、血压、步数、健康参数)
2016-03-18
Android开发时获得开启的通知
2014-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人