野火少年
梦想成为中间层或者系统层开发工作,有缘人可推荐!!!
1)8年智能语音、IOT 产品开发经验,熟悉物联网平台、智慧安防、酒店客控系统
2)能够独立完成后端服务器开发、熟悉 Linux 系统、Android 系统
3)3年研发总监管理经验 1年半Framework层开发经验 10年Android应用开发经验
4)从事10年智能硬件相关产品开发:基于RK、全志、MTK 平台开发;主导各种类型服务、教育、安防机器人产品、物联网网关中控产品、背景音乐KTV娱乐产品、故事机平板、广告机、微投投影、各种商显、校话机等智能硬件产品。
5)物联网平台熟悉 米家、涂鸦系平台产品;熟悉中控智能家居产品。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Framework层实现HDMIN 自动检测弹框确认进入或取消
对于大屏方案,基本上都有HDMIN功能,接收信号输入,方便扩展外围设备的功能,做一个显示效果。比如 其它第三方设备通过HDMIN线接入到电视上,电视上就会显示第三方设备画面,实现屏幕扩展。第三方设备一般包括:电脑、电视盒子、家庭投影仪、家庭家居控制屏他、笔记本、Android 平板、车机车载系统 等。1.HDMI IN做插上自动打开2.HDMI IN自动打开前需加一个确认弹窗,确认打开或者取消3.HDMI IN桌面图标做隐藏。原创 2025-10-24 10:55:42 · 23 阅读 · 0 评论 -
AOSP编译打包脚本-项目源码管理经验
针对个人日常开发和自己学习过程中的一些经验分享针对项目编译技巧、打包技巧。日常开发中,项目很多很多时候,源码如何维护。这里总结的其实是实际发发过程中 编译、打包、源码管理的实际操作方案,最终就是为了提升开发效率无论你是方案商、ODM厂商、产品公司 甚至是个人,涉及到系统开发的一定设计到类似的开发场景,可以参考借鉴。都是为了提升开发效率和工作简单化。原创 2025-09-29 15:52:16 · 1198 阅读 · 0 评论 -
MTK-Android13-Dialer 通话界面定制修改
Android中打电话的应用是Dialer,部分商用的场景比如:电话亭、公司共用电话、校园共用电话场景是由一定的定制场景的。具体需求如下:把通话界面的所有功能按钮全部去掉这个需求其实很简单的,通过阅读源码并分析源码能够快速实现需求这里面比较坑的是,其实部分按钮咋一看和实际ID 很难对上,本身也不熟悉情况下导致修改错误,建议一个一个或者再无编译报错情况下一个一个验证。原创 2025-09-27 11:53:26 · 1125 阅读 · 0 评论 -
MTK-Android13-实现拷贝预置资源到vendor分区下
集成一个遥控器语音方案到系统,实现语音控制大屏设备的功能。其中设计到把.so和.xml分别内置拷贝到 机器的目录下。先看看需求和实际效果吧:借助一个需求来总结 拷贝资源到目录下的知识点。所以,系统要做的事情,就是内置资源到指定的目录下。MTK平台中的mediateksample目录是设备配置和项目特定文件的存储位置,主要用于定制和配置基于联发科(MTK)芯片组的特定设备项目。这个目录是Android开源项目(AOSP)中device目录下的一个重要组成部分。组成部分描述示例/备注项目特定目录。原创 2025-09-01 18:31:16 · 1146 阅读 · 0 评论 -
Android 系统属性添加篇
实现添加属性的功能,了解属性添加机制,搞明白两种不同的添加方式和区别系统属性是Android系统的一个全局键值对数据库,主要用于原生层() 和 系统服务 之间的配置和通信。它通过libcutils库的和函数来访问。常见的例子如(只读产品型号)、(持久化时区)、(控制服务)。Android提供了一个名为的系统应用,它维护了三个SQLite数据库来为其他应用存储配置信息。这些配置通过ContentProvider暴露出来,供应用通过进行访问。: 所有用户共享的全局设置,通常需要系统权限()才能修改。原创 2025-08-26 12:44:40 · 1143 阅读 · 0 评论 -
限制apk使用时长第一篇-统计apk使用时长
看到手机端有应用限时使用;之前有客户提到过教育软件限制使用时长的客需,后面负责这个客需的同事没有搞定,没有去实现,这个客需点废弃掉了那么自己就私下里去实现这样的一个功能。UsageStatsManager 提供以下主要功能:查询应用程序的使用统计数据获取应用使用事件的详细日志监控设备使用模式分析了需求,对 统计apk使用时长 部分做了一定的分析和实验了解了 UsageStatsManager 使用,也要注意最佳实践里面有一定的针对性的说明。原创 2025-07-15 00:15:00 · 747 阅读 · 0 评论 -
Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))
所以,整套流程分析下来,设置默认App,这里HomeLauncher 举例,核心逻辑就是给包名一个role 权限,然后写入到文件,最后同步一次,通知系统。如上分析了一整套默认Launcher 的代码逻辑业务,同理对于默认浏览器、短信、打电话等完全适用。通过反射实现 想要的功能,反射RoleManager 类,的addRoleHolderAsUser 方法比较合适,而且有回调。整个流程里面发现其它类的调用并不合适。原创 2025-03-27 19:15:39 · 1571 阅读 · 0 评论 -
KeyCode及KeyCode分发机制
从大的方向将,物理按键始于外部输入,在Kernel 响应,再传递到Service或者View层消费,对于Kernel层、系统层暂不研究。总的来讲:系统响应KeyCode,这些KeyCode是外设作为输入源,KeyCode 键值就是Android一套标准的协议。比如物理按键操作之后,系统是如何分发、响应、处理、拦截呢?比如我们需要客制化一些物理按键功能,如何实现呢?这里给出谷歌官方KeyEvent 事件,里面总结了所有的KeyCode。声音音量也是一样的,在这个方法中进行了处理一次,再响应给View来处理。原创 2024-09-19 00:46:42 · 1753 阅读 · 0 评论 -
Android源码管理
提升源码管理能力,提升底层开发效率管理好源码。原创 2024-09-27 23:59:29 · 1288 阅读 · 0 评论 -
限制apk使用时长第二篇-限制/拦截Apk启动-应用锁功能
看到手机端有应用限时使用;之前有客户提到过教育软件限制使用时长的客需,后面负责这个客需的同事没有搞定,没有去实现,这个客需点废弃掉了那么自己就私下里去实现这样的一个功能。这个方法允许设置一个 IActivityController 接口的实现,AMS 会在关键的活动生命周期事件发生时回调该控制器。这通常用于:系统测试框架(如 Monkey 测试)调试工具特殊的系统监控场景上面着重分析、了解了AMS里面的setActivityController 方法,以此功能实现 限时应用中拦截应用功能。原创 2025-07-15 21:00:00 · 1203 阅读 · 0 评论 -
Android生成系统签名文件jks
场景:我们很多应用需要用到系统签名,可以通过生成系统签名文件,在生成apk时使用这个签名,然后可以安装到机器中,不需要放在源码里编译,重新刷系统。系统apk,特别是定制方案,将apk生成后,还需要收到进行命令脚本用系统签名一次,再放到系统源码里面编译。太麻烦了。解决方案:生成.签名文件jks,直接放在AS里面,生成apk时候就已经是系统签名。这个时候直接install安装或者直接放到系...原创 2019-08-21 11:35:29 · 6525 阅读 · 0 评论 -
Android 亮度范围定制
最终通过日志打印,查看0-255 的亮度值,因为在brightnessIntToFloat 和 brightnessFloatToIntRange 中,我们设置了最小亮度65,也就是166,所以 我们编译固件,看日志打印就是166-255 的范围。比如:0-60% 亮度不变,那么我们把60%-100%的控制范围扩充到0%-100%,控制范围变大,控制区域保持一致。这里补充下:零时亮度,最终设置是需要走到如下 put 到系统里面取,才是真正的设置亮度,这个方法也是应用层设置亮度的方法呀。原创 2024-09-11 00:26:25 · 1964 阅读 · 0 评论 -
定时开关机功能实现
针对MTK方案实现定时开关机功能,并对外释放接口定时开关机功能和闹铃功能API上面都用到了AlarmManager.java,对于定时任务有一定的参考意义。原创 2024-10-22 00:22:50 · 1097 阅读 · 0 评论 -
去除恢复出厂设置中UI文字显示
bootable/recovery 模块资源加载方式,映射到小系统对当前界面实现方式替换、隐藏文案是实现方式。原创 2024-09-09 23:19:48 · 632 阅读 · 0 评论 -
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 · 1122 阅读 · 0 评论 -
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 · 1313 阅读 · 0 评论 -
MTK-Android12 13 屏蔽掉Viewing full screen
一个简单的需求,知道修改方案,解决方法最重要。原创 2025-04-16 14:47:30 · 1737 阅读 · 3 评论 -
PMS安装apk之界面跳转
与ActivityManager和AMS的关系类似,PMS也有一个对应的管理类PackageManager,用于向应用程序进程提供一些功能。PackageManager是一个抽象类,它的具体实现类为ApplicationPackageManager,ApplicationPackageManager中的方法会通过IPackageManager与AMS进行进程间通信,因此PackageManager所提供的功能最终是由PMS来实现的,这么设计的主要用意是为了避免系统服务PMS直接被访问。原创 2024-10-12 01:20:57 · 1226 阅读 · 0 评论 -
模拟Power长按事件实现应用调用
回到需求实现,分析了从PhoneWindowManager 按键手势识别长按->要么Framework层弹框要么SystemUI里面弹框。流程已分析,业务还是蛮清楚的。要模拟物理按键长按, 方法一中在framework 里面模拟,你会发现 com/android/server/policy 的policy,受保护的隐私目录,不对外提供的。所以 无法实现的。当然可以在Framework 层,模拟对话框。原创 2024-12-06 23:06:13 · 928 阅读 · 0 评论 -
MTK-Android13-包安装器PackageInstaller 静默安装实现
前两篇文章分析了PackagerInstaller 安装流程。后面空了再分析框架层PMS的处理以及在框架层面的少许拦截和加功能。如。原创 2025-02-21 10:13:34 · 1541 阅读 · 0 评论 -
Android13-包安装器PackageInstaller-之apk安装流程
PackageInstaller-之apk安装流程内容中,主要是包安装器PackageInstaller 相关内容。作为PMS安装apk之界面跳转的续篇。两篇文章规整起来就是完全分析完了。当然,这里面还有权限相关操作只是一笔带过介绍了。主要分析了:PackageInstallerActivity InstallInstalling 两个源码的分析。涉及到安装确认弹框-权限弹框-安装中等待弹框-注册监听安装回调-安装session创建和提交到系统分析到了框架层了已经,到此结束。原创 2025-02-17 20:37:22 · 4154 阅读 · 0 评论 -
MTK-GMS版本国内WIFI受限问题
MTK-GMS版本国内WIFI受限问题解决。原创 2025-04-03 23:12:38 · 1062 阅读 · 0 评论 -
MTK Android12-13 App卸载加锁
多分析源码,看流程看业务MTK Android12 安装app添加密码锁限制PMS 本身功能比较多,代码量大,多打日志看流程。用 IDE 开发工具查看源码,提高代码阅读效率。原创 2025-04-28 12:16:20 · 808 阅读 · 0 评论 -
MTK Android12 开机向导
文章目录需求-场景参考资料:博客资料官网参考资料:参考资料注意点附件资料文件说明:推荐工具:配置定制的 声明叠加层 APK需求实现替换字符、删减开机向导界面、添加开机向导界面删除部分界面需求,官网说明如下更新部分字符串、图片资源,官网说明如下遇到问题具体实现配置系统编译环境总结需求-场景开机向导定制备注:开机向导是一个单独的apk 无源码,在单独apk 基础上,修改apk 实现开机向导定制。参考资料:博客资料如果您有开机向导的需求,建议看一下相关开机向导定制例子,介绍,这一块内容本身对外资料很原创 2024-12-10 22:30:53 · 1339 阅读 · 1 评论 -
MTK-后台进程限制功能实现
实现这个客需,自己看到了AMS的相关常量维护逻辑,这里其实核心是性能优化,参考资料有相关文档说明。这里非直接关联客需 暂不延伸实现客需思路是修改默认值,实际上没用。打印日志、看流程最后发现默认设置了一次128 , 又找不到位置,那就换个思路吧参考资料里面,大神的思路是在 systemReady 地方重新设置一次AMS 的 setProcessLimit, 我自己没有验证过。如果OK,那么就是在设置默认128值后面,如果在前面估计也没用,可以自行验证。原创 2025-06-26 20:41:48 · 898 阅读 · 0 评论 -
MTK免USB线实现WIFI Adb连接
部分产品是把USB接口放到机器里面,不会暴漏出来。这样就给实际调试带来了极大的不便利。如果是MTK产品,要调试就必须拆机了init.rc 文件添加设置adb tcp 端口默认一次init.rc 知识了解。原创 2024-10-10 22:58:19 · 874 阅读 · 0 评论 -
MTK-Android 系统拷贝预置资源
教育定制类客户:预置大量的音视频课件资源,客户应用可以直接获取系统课程资源,比如视频、文本、文档等静默安装功能:系统第一次开机时候需要静默安装部分app,那么这部分apk 资源需要提前预置到系统内部。系统第一次开机时候检测到应用未安装就进行安装开机启动可执行文件:对应一些二进制可执行文件,开机自启动服务或者执行这个二进制脚本需求。比如:开机加载开机动画,第一次拷贝需求:类似于系统一些必备资源,如开机动画,系统也会先预置到系统里面去。这里主要认识系统拷贝文件的方案和几种不同的场景。原创 2025-08-05 19:00:00 · 1080 阅读 · 0 评论 -
串口在系统framework 中的应用
文章目录一)场景需求二)问题三)本文内容讲解四)应用端实现核心思想三点设置串口参数开启线程,接收串口数据发送串口数据实际应用五)系统端framework层对接串口添加串口工具类电池服务里面实现 串口逻辑总结一)场景需求提示: 如果是手机方案,标准的电池电量一套,比如大家最常见的手机方案,采用的就是最标准的一套架构实现。Android电池系统架构 电池 安卓二)问题如果是标准方案,按照标准流程,电池系统从驱动到应用层一层层传递,但是 如果电池厂商特别是定制的电池方案,电量和充电状态并不是比原创 2024-11-28 20:56:48 · 1100 阅读 · 0 评论 -
去掉开机正在启动,去掉开机黑屏问题
问题描述:1)开机动画播放不完整,第一次刷机启动能够播放完整,后面开机开机动画播放只有2秒左右2)开机动画播放完后在进入Launcher之前会有一个 "正在启动…"显示着3)开机动画播完后进入Launcher前有一个黑屏阶段或者白屏阶段。原创 2024-08-15 23:37:04 · 1256 阅读 · 0 评论 -
Android13开机向导
前面一篇文章在Android12 基础上已经分析了开机向导定制方案,这里再以实际案例在Android13 上面从另外一个思路来实现需求编译源码,SIM界面 真的跳过了,实现了需求;紧急呼叫也没有了,实现了需求。这种方法区别于上一篇官网方法,其实是从底层触发来解决问题,这个并不是谷歌提倡的,但是能够解决实际问题,且解决方便。再次强调,不同平台不同安卓版本不同产品方案实现方法可能不一样,但是思路一样。原创 2024-12-11 23:50:21 · 1850 阅读 · 0 评论 -
MTK Android12 安装app添加密码锁限制
上面我们从整体大概流程分析下来,已经分析到了 方法:processInstallRequestsAsync ,准备安装了。在回过头来看看,我们的需求实现方法不就是在这个方法里面,开了一个dialog 密码输入框吗,如果密码输入成功,则进行上面processInstallRequestsAsync 里面的四步方法:doPreInstall ->installPackagesTracedLI->doPostInstall->restoreAndPostInstall。原创 2025-03-13 02:18:35 · 1161 阅读 · 0 评论 -
MTK 更换Uboot Logo Kernel Logo 开机动画
我们上面修改的路径文件夹是fhd,修改的uboot、kernel logo 是fhd_kernel.bmp 为什么是这个名字,换个项目换个产品 需要怎么配置。MTK 平台,定制产品、从一个产品换到另外一个客户产品,对应的客户画像是需要更换的。切记 只针对MTK 平台,其它平台比如RK 、全志产品 不是这样做的,路径不一样,思路一样的。替换里面的 Uboot 和 Kernel logo,fhd目录。所以对应三个方面的画面,需要更改替换,是一个非常见的需求。首先看配置的是哪种分辨率的logo,原创 2024-10-11 23:18:33 · 886 阅读 · 0 评论 -
系统实现屏幕横竖屏切换
机器默认横屏或者竖屏显示 -强制横竖屏显示。原创 2024-11-29 19:12:46 · 2719 阅读 · 1 评论 -
MTK内置第三方APP-卸载不可卸载-签名问题
其中 meituxiuxiu 就是 美图秀秀app 的一个目录名,这个目录对应的就是 vendor\mediatek\proprietary\packages\3rd-party 目录下的app 文件夹。.so 库,根据平台放置对应的库文件,比如 在当前目录下创建 lib/arm64-v8a 文件夹,然后将apk 中的.so 库,取出来放置进去。表明使用的是apk原本的签名,记住这里的PRESIGNED需要大写。配置apk 签名,apk 是用自己的签名还是需要用系统签名。编译,刷机,效果如下。原创 2024-10-10 23:21:55 · 1101 阅读 · 0 评论 -
MTK平台 Android12-Android13 默认搜狗输入法
常用客需功能,仅供参考,在MTK平台上面的实践,在RK平台上面只有内置方式不一致而已,默认方式和授权其实一样的。这里只是搜狗输入法的默认方式一次探讨,其它输入法默认 思路完全一样。每种输入法有自己优劣,具体场景具体客需具体对待。原创 2025-03-25 19:00:00 · 1306 阅读 · 0 评论 -
MTK-Android12-13 USB模式开机默认
默认修改USB 模式的方案,前提还是得自己有一定的相关基础,可以网上了解,不然修改起来模棱两可有了一定的USB相关基础,在实际实现需求阶段,看源码、分析源码 见名知意的,有自己的思路了。这里我们切实关注了UsbDeviceManager 针对 USB 模式开机自启的模式设置相关源码,相关其它业务这里暂不分析,后续再说。原创 2025-06-16 19:25:45 · 888 阅读 · 0 评论 -
Android实现关机和重启功能
Android实现关机和重启的功能;反射调用原创 2024-09-16 01:26:52 · 2823 阅读 · 0 评论 -
系统手势导航-虚拟导航切换
Android11 开始支持了手势操作,如大家目前手机基本上都是手势操作形式;早期都是物理按键或者虚拟按键的操作。原创 2024-11-29 18:57:26 · 1856 阅读 · 0 评论 -
Android 静态壁纸设置实现方案
这里实现了静态壁纸设置的方法,就是一个反射或者api 调用。实际 逻辑比较简单的这里只是从系统app WallpaperPicker,通过界面,反推实现设置静态壁纸的逻辑和分析代码层面的流程和业务。实际上 WallpaperPicker App有很多设计思想和架构设计,这里暂不深究。如果客户定制,需要动态壁纸功能。这里暂不分析,后续有机会实现下,暂不提供解决方案。原创 2025-03-24 20:09:20 · 1081 阅读 · 0 评论 -
Android 屏保功能实现
PowerManagerService Power服务,本文注册启动关联DreamManagerService地方DreamManagerService 屏保服务:具体逻辑实现DreamManagerInternal 屏保功能抽象接口StartNowPreferenceController 设置里面立即启动屏保入口。原创 2024-12-19 01:32:29 · 1673 阅读 · 0 评论
分享