- 博客(473)
- 资源 (145)
- 问答 (2)
- 收藏
- 关注
原创 限制apk使用时长第二篇-限制/拦截Apk启动-应用锁功能
看到手机端有应用限时使用;之前有客户提到过教育软件限制使用时长的客需,后面负责这个客需的同事没有搞定,没有去实现,这个客需点废弃掉了那么自己就私下里去实现这样的一个功能。这个方法允许设置一个 IActivityController 接口的实现,AMS 会在关键的活动生命周期事件发生时回调该控制器。这通常用于:系统测试框架(如 Monkey 测试)调试工具特殊的系统监控场景上面着重分析、了解了AMS里面的setActivityController 方法,以此功能实现 限时应用中拦截应用功能。
2025-07-15 21:00:00
745
原创 限制apk使用时长第一篇-统计apk使用时长
看到手机端有应用限时使用;之前有客户提到过教育软件限制使用时长的客需,后面负责这个客需的同事没有搞定,没有去实现,这个客需点废弃掉了那么自己就私下里去实现这样的一个功能。UsageStatsManager 提供以下主要功能:查询应用程序的使用统计数据获取应用使用事件的详细日志监控设备使用模式分析了需求,对 统计apk使用时长 部分做了一定的分析和实验了解了 UsageStatsManager 使用,也要注意最佳实践里面有一定的针对性的说明。
2025-07-15 00:15:00
570
原创 MTK-系统设置Settings 开机累计时长源码分析
我记得以前有客户要做限制开机使用时长功能,机器开机一段时间后自动关机功能。当时想法就是通过开机累计时长功能实现。UptimePreferenceController 源码如下,发现非常简单,那么它的逻辑应该就在父类AbstractUptimePreferenceController里面了,代码如下/***//***/= null) {@Override@Override@Override@Override@Override@Override。
2025-07-09 18:45:00
978
原创 RKAndroid11-系统设置新增开关选项
Preference - 所有设置项的基类PreferenceScreen - 设置界面的容器,相当于一个设置页面PreferenceFragment 或 PreferenceActivity - 用于承载 Preference 界面的组件说白了就是当前 在 系统面板里面显示的内容,这里根据属性 显示不同的 字符串、文本内容呀。
2025-07-08 00:15:00
798
原创 RK-Android11-性能优化-限制App内存上限默认512m
其实就是要修改VM 虚拟机相关的参数,涉及到相关属性值修改实现,通过这个需求,最核心的还是了解 Android系统相关的性能内容,比如GC、内存、堆栈 等参数作用触发条件普通应用的最大堆内存限制(软限制)默认应用(未声明 android:largeHeap)大堆应用的最大堆内存限制(硬限制)应用声明 android:largeHeap=“true”VM参数、性能 、GC 才是重点 这里暂未分析,这里只是修改其中两个内存相关参数值,默认。
2025-07-04 15:50:37
1163
原创 RK-Android11-系统增加一个属性值
场景的一个属性修改,给出方法,记录下。针对属性值判断,针对应用、系统级别都有参考意义,业务上面会有需求。这里整理出来,方便后续实现其它功能,知识点串联起来如果应用级别的就用 参考资料中的Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用就够了,如果需要通过属性判断,这里也是一个解决方案。
2025-07-04 13:36:01
461
原创 RK-USB白名单功能实现
针对这个USB白名单需求,其实就是一个基础的在framework层 新增一个USB相关的接口,对外释放,扩充功能罢了。很多子模块架构思想一致,直接新增接口、实现接口功能、对外提供方法、对framework实现业务逻辑罢了。梳理USB Host模式下,usb 摄像头白名单功能。其中UsbHostManager 源码代码量也不大,如果稍微懂一些UVC相关知识,里面很多代码和流程都是比较熟悉的面孔了。当前实验验证了白名单功能,具体来实现业务,维护的也是内部的白名单集合,存储到本地就可以了。
2025-06-26 20:43:01
1171
原创 MTK-后台进程限制功能实现
实现这个客需,自己看到了AMS的相关常量维护逻辑,这里其实核心是性能优化,参考资料有相关文档说明。这里非直接关联客需 暂不延伸实现客需思路是修改默认值,实际上没用。打印日志、看流程最后发现默认设置了一次128 , 又找不到位置,那就换个思路吧参考资料里面,大神的思路是在 systemReady 地方重新设置一次AMS 的 setProcessLimit, 我自己没有验证过。如果OK,那么就是在设置默认128值后面,如果在前面估计也没用,可以自行验证。
2025-06-26 20:41:48
771
原创 RKAndroid11-WIFI白名单功能实现
针对定制案子有客户需求是要有一个WIFI白名单功能WIFI白名单解释-需求理解: 设置客户指定的SSID 才能够在WIFI列表中显示出来;默认情况下所有WIFI列表可以显示客户可以编辑白名单SSID,实现白名单可控假使你已经对WIIF相关基础有一定的了解,这边文章和推荐资料能帮你实现需求,很容易理解,和定制相关WIFI功能实际经验来看,framework.jar 就是无法调用到自己修改的文件方法,不妨换个思路,反射。这里只是在服务类里面维护了一个内存结合List 类型的白名单。
2025-06-25 01:00:00
613
原创 Android软件适配遥控器需求-案例经验分享
十多年的Android软件开发中,基本上都是做方案上的软件产品。对于 电视、投影、闺蜜机 上面的软件 都有遥控器控制的需求,就需要自己的Android App能够受遥控器控制。这里举一个案例,分享一下开发中的部分经验。也方便自己下次开发直接复用经验,高效开发。只是作为一个UI组件使用,第三方组件和核心功能就是在获取焦点时候突出显示而已,和 布局表现及 硬编码实现方式并无区别。遥控器功能开发,本身就是处理焦点的问题,这里简要描述了焦点基本知识、实际开发案例、注意事项。
2025-06-18 17:59:27
711
原创 MTK-Android12-13 USB模式开机默认
默认修改USB 模式的方案,前提还是得自己有一定的相关基础,可以网上了解,不然修改起来模棱两可有了一定的USB相关基础,在实际实现需求阶段,看源码、分析源码 见名知意的,有自己的思路了。这里我们切实关注了UsbDeviceManager 针对 USB 模式开机自启的模式设置相关源码,相关其它业务这里暂不分析,后续再说。
2025-06-16 19:25:45
812
原创 MTK-USB模式动态设置
UsbManager 源码位置查看FUNCTION_MTP 、 FUNCTION_RNDIS 、FUNCTION_MIDI、FUNCTION_PTP、FUNCTION_NONE 是如何定义的。找到===》@SystemApi@SystemApi@SystemApi@SystemApi@SystemApi他们是系统的API,居然又是通过GadgeFunction 类定义的。
2025-06-11 18:55:03
1039
原创 驱动-封装驱动API接口
这里针对前面的知识点:定时器、驱动传参、api 封装 来对知识点的进一步掌握。核心需要了解的还是驱动传参的逻辑和业务,后面有相关功能都可以自己定制了。
2025-06-10 18:19:02
612
原创 驱动-地址传参实验-ioctl
前面已经了解过驱动传参实验,这里进一步了解驱动地址传参。驱动传参和地址传参,实际写代码感觉基本一致。其实就是参数类型不同而已。这里以最简单结构体为例,实际过程中可能地址比较复杂,但终是地址类型,表现形式不一样而已,后续再讨论。
2025-06-10 16:37:07
671
原创 MTK-Android12-13 Camera2 设置默认视频画质功能实现
对比图片默认拍摄大小,逻辑一样的,都是在获取默认分辨率的地方,进行修改。如下图 足以说明 拍照和录像默认质量、分辨率其实逻辑一样的,修改默认值即可。设置默认值的这个过程中,有很多逻辑的,比如setValue , 拍照和录屏 也是基本一样的思路,代码逻辑。这里不是重点,暂不讨论。深究其它部分这里就不参与了。
2025-06-08 01:53:41
1193
原创 驱动-传参实验-ioctl
用户如果要对外设进行操作,对应的设备驱动不仅要具备读写的能力,还需要对硬件进行控制。以点亮LED灯驱动实验为例,应用程序通过向内核空间写入1和0从而控制LED灯的亮灭,但是读写操作主要是数据流对数据进行操作,而一些复杂的控制通常需要非数据操作,这时本章节要学习的ioctl函数就闪耀登场了。
2025-05-16 11:05:17
351
原创 驱动-Linux定时-timer_list
硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始的起点, 以未来的某一时刻为计时的终点) , 内核只有在系统定时器的帮助下才能计算和管理时间, 但是内核定时器的精度并不高, 所以不能作为高精度定时器使用。并且内核定时器的运行没有周期性, 到达计时终点后会自动关闭。如果要实现周期性定时, 就要在定时处理函数中重新开启定时器。Linux 内核中使用 timer_list 结构体表示内核定时器, 该结构体定义在“内核源码/include/li。
2025-05-15 17:18:24
1115
1
原创 驱动-互斥锁
将信号量量值设置为 1, 最终实现的就是互斥效果, 这里要了解的互斥锁功能相同, 虽然两者功能相同但是具体的实现方式是不同的, 但是使用互斥锁效率更高、更简洁, 所以如果使用到的信号量“量值”为 1,一般将其修改为使用互斥锁实现。当有多个线程几乎同时修改某一个共享数据的时候, 需要进行同步控制。线程同步能够保证多个线程安全访问竞争资源, 最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态: 锁定或者非锁定。某个线程要更改共享数据时, 先将其锁定, 此时资源的状态为“锁定” , 其他线程不能更改;
2025-05-09 18:07:11
981
原创 驱动-信号量
信号量是操作系统中最典型的用于同步和互斥的手段, 本质上是一个全局变量, 信号量的值表示控制访问资源的线程数,可以根据实际情况来自行设置, 如果在初始化的时候将信号量量值设置为大于 1, 那么这个信号量就是计数型信号量,允许多个线程同时访问共享资源。如果将信号量量值设置为 1, 那么这个信号量就是二值信号量, 同一时间内只允许一个线程访问共享资源,注意!信号量的值不能小于 0。当信号量的值为 0 时, 想访问共享资源的线程必须等待, 直到信号量大于 0 时,等待的线程才可以访问。
2025-05-09 15:56:52
778
原创 Launcher3-实现家长管控-儿童模式-老人模式
借助之前文章分析,开机自启应用的一个逻辑,判断是否设置过模式【开机自启APP】+ HOME 按键监听 来实现逻辑默认的Launcher 是 安卓自带的Launcher3. 这篇文章借助于系统实现了功能。如果Launcher 是第三方应用自己开发,则在其它Launcher 中实现逻辑即可。
2025-04-29 13:48:43
765
原创 MTKAndroid12-13-开机应用自启功能实现
这里从系统角度 给出了应用自启的一个解决方案,建议不要用开机广播实现涉及到的知识点需要了解基本的Launcher3 源码 和 Settings.System, Settings.Secure和Settings.Global存储的应用。
2025-04-28 17:46:23
1184
原创 MTK Android12-13 App卸载加锁
多分析源码,看流程看业务MTK Android12 安装app添加密码锁限制PMS 本身功能比较多,代码量大,多打日志看流程。用 IDE 开发工具查看源码,提高代码阅读效率。
2025-04-28 12:16:20
751
原创 Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现
实现了MTK Android13 平台下默认图片大小的逻辑分析了解决问题的思路,源码分析流程建议对Camera2 相关知识需要一定的了解最好在查看源码的过程中,难免找不到关键字,不知道修改哪里。可以借助IDE- AS VS 操作,方便定位源码位置。
2025-04-27 11:46:17
1094
原创 MTKAndroid13-Launcher3 屏蔽部分app不让显示
这个需求解决方案,完全根据代码找到并进行修改实现,思路还是很清晰的建议多看看Launcher 相关基础知识,对业务和流程分析非常有好处的。
2025-04-25 14:09:04
800
原创 驱动-自旋锁死锁
通过程序验证,和自旋锁死锁 有了初步认识为什么会死锁,为什么之前的自旋锁环境没有死锁,这个地方需要思考下。指定了CPU、内核睡眠等待、其它进程重复获得自旋锁等原因造成的自旋锁的实际案例和规避死锁,后面再进一步理解的要。
2025-04-19 12:56:11
867
原创 驱动-并发与竞争
并发与竞争这么多年接触下来,操作系统下 不同的编程语言都有对应的 并发、并行、线程、进程、同步、异步一说。这些核心本质其实是操作系>统的机制。那么不同开发语言下面对应的形态不一样而已,表现形式不一样,但是基本概念、实现原理 都是基于操作系统的。在上学课本上面操作系统学科里面 应该是第一次接触进程、线程、这些基本理论的。这里我们在驱动层面 理解 实验。
2025-04-17 11:19:06
822
原创 驱动-兼容不同设备-container_of
本篇其实还是对以前技术的总结,这里着重用到了函数 container_of,有点面向对象的意思。这里适配不同的驱动设备只是一个案例而已。
2025-04-16 00:15:00
702
原创 驱动-文件私有数据
Linux 中并没有明确规定要使用文件私有数据, 但是在 linux 驱动源码中, 广泛使用了文件私有数据, 这是 Linux 驱动遵循的“潜规则” , 实际上也体现了 Linux 面向对象的思想。structfile 结构体中专门为用户留了一个域用于定义私有数据这里对私有数据 结构体 file,通过它实现了了私有数据的共享,file 在open 、read、write 等文件操作中共享,利用共享的私有数据 定义的又是指针类型,然后封装数据,实现效果的。
2025-04-15 01:00:00
675
原创 MTK Android12-13 -Intent Filter Verification Service 停止运行
分析源码、参考资料解决 Intent Filter Verification Service 停止运行 错误这里其实其实延伸来看就是屏蔽部分包名ANR、崩溃弹框的解决方案。
2025-04-15 00:15:00
1975
2
原创 开源项目Syncthing-Android环境搭建与编译
自己花了好几周,找了好多资料,测试无数测最终解决了编译问题:其实就是两个大问题,需要看到具体日志,然后解决。github 依赖的资源无法访问,需要解决ubuntu 访问github 问题,修改dns 路由解决go 在编译过程中编译不成功,需要解决网络接口不可达,设置go 代理来解决。
2025-04-12 12:04:23
1200
原创 驱动-内核空间和用户空间数据交换
copy_from_user 和 copy_to_user 是 Linux 内核中用于在用户空间和内核空间之间安全传输数据的两个重要函数。内核和用户态数据传递就是通过两个方法调用来实现,回调到用户态其实就是指针传递。
2025-04-12 00:15:00
1251
原创 驱动-杂项设备
看杂项设备还是要和标准字符设备对比来看,主设备号固定为10,次设备号动态分配,简化了字符设备驱动的注册流程,适用于功能简单的设备杂项设备也有自己的结构体miscdevice 、file_operations ,却别与标准字符设备的 设备号结构体dev_t ,注册的字符设备结构体cdev ,文件操作集合结构体file_operations。
2025-04-11 09:00:33
714
原创 驱动-字符设备驱动框架
这里是对字符设备的一个总结,前面知识的进一步理解字符设备最终通过 文件结构体 file_operations 来实现,系统和驱动之间文件操作方法的映射。
2025-04-11 00:15:00
993
原创 MTK-删除设置首页菜单项
实现屏蔽系统设置中壁纸菜单的需求,了解系统设置一级菜单的加载显示原理这里设计到的相关内容也是设置里面需要重点掌握的基础知识。
2025-04-09 12:18:28
888
原创 驱动-创建设备节点
字符设备知识点中的 设备节点创建内容熟悉结合以前的知识,字符设备设备号申请,字符设备注册内容进一步熟悉设备注册、类、设备创建后 在驱动卸载的时候记得 卸载。
2025-04-09 00:15:00
753
原创 MTK-Android12-13 屏幕永不休眠功能实现
这里重点是PMS 在息屏时间上面的一个功能分析关联到PMS 里面实现的另外一个功能 屏保功能 都是跟息屏相关,部分逻辑业务关联的对于默认息屏时间,这里属于新增息屏时间选项的一个功能。如果需要新增其它息屏时间选项,只需要在修改息屏时间源即可 就 不需要修改PMS了。
2025-04-08 12:18:32
1683
去除开机动画结束后显示正在启动;去掉开机后进入Launcher前黑屏;延时实现开机动画播放完全
2024-08-15
Rk3568 Android12 SystemUI 源码
2024-08-13
SystemUI 截屏快捷功能添加
2024-08-12
SystemUI QS 面板新增截屏功能按钮资源代码
2024-08-11
RK3568源码编译手册:Android11、12源码;Linux、Linux-5.10内核源码
2024-08-07
3568开发板驱动开发指南
2024-08-07
springbootstudy.zip
2020-01-31
springboot2_mybatis_durid_pager.zip
2020-02-02
cookie_session.zip
2019-11-07
编辑器 Notepad++.zip
2020-03-28
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
Rk Android12 Setting 源代码
2024-08-15
无障碍服务工具类,在源码基础上添加日志,方便check 流程
2024-08-16
手环数据采集(心率、血压、步数、健康参数)
2016-03-18
Android开发时获得开启的通知
2014-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人