@ZhangJun
毕业于武汉科技大学软件工程专业,拥有10 年 + Android系统层 / 应用层全栈开发经验,深耕智能电视(TV/STB)、物联网(智能音箱 / 无人零售智能柜)等领域,擅长系统定制与行业解决方案设计。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android系统开机时间分析与优化指南
本文系统阐述了Android开机时间优化的全流程技术方案。首先详细解析了从电源键按下到桌面显示的完整启动流程及关键事件序列,然后介绍了秒表计时、日志分析和自动化脚本三种测量方法。重点从底层和上层两个维度提出了具体优化措施:底层包括编译器优化、内核驱动裁剪和日志精简;上层涵盖系统服务参数调整、应用预优化和功能组件精简。最后提供了验证工具和方法,并强调优化需要在性能、功耗和功能间取得平衡。通过这套系统化方案,可有效提升Android设备的开机速度与用户体验。原创 2025-11-24 22:20:15 · 60 阅读 · 0 评论 -
Postman 工具实现签名校验:完整操作指南与代码解析
本文将介绍API签名校验的重要性及Postman实现方法。通过预请求脚本配置和请求头设置,详细讲解签名生成流程,包括时间戳、随机数等关键参数的使用。文章还涵盖多环境管理、错误处理等高级技巧,提供测试验证策略和安全最佳实践。最后总结签名校验如何提升API测试的安全性和可靠性,为团队协作和自动化测试奠定基础。原创 2025-11-09 15:36:32 · 253 阅读 · 0 评论 -
Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
从CTS的技术兼容到GMS的商业授权,Android认证体系如同精密齿轮组,驱动着全球30亿设备的生态一致性。理解这套规则,方能跨越“能用”到“合规”的鸿沟。原创 2025-08-03 14:38:41 · 2695 阅读 · 0 评论 -
2025 Android 开发岗面试核心考点全攻略:从基础原理到高频真题解析
Android开发中的核心架构与优化技术涵盖组件化/插件化、进程通信、多线程和反编译等领域。组件化通过独立模块开发提升效率,插件化支持运行时动态加载;进程通信采用Binder机制,提供多种IPC方案;多线程编程从基础Thread演进到高效协程,解决性能与安全问题;反编译工具链用于逆向分析。开发者需根据场景选择合适技术,如协程优化异步、AIDL处理复杂IPC。这些技术共同构建高性能、可扩展的Android应用。原创 2025-06-26 19:02:32 · 329 阅读 · 0 评论 -
安卓音视频工程师面试通关秘籍:从岗位需求到问题应答全解析
本文系统梳理了Android音视频开发核心技术栈,涵盖音频编码(PCM/AAC)、视频编码(H.264/265)、容器格式(MP4/FLV)等基础概念,详细解析MediaPlayer、ExoPlayer、Camera2等关键框架的使用场景。针对音视频同步、直播秒开优化等核心问题,提供包括缩短GOP长度、CDN调度在内的解决方案。原创 2025-06-19 11:48:49 · 1174 阅读 · 0 评论 -
物联网平台与物模型技术深度解析:从架构到实践应用
物联网(IoT)正推动各行业数字化转型,其核心在于三层架构(感知层、网络层、应用层)和标准化物模型体系。通过微服务与分布式技术构建的IoT平台,实现设备连接、数据分析和智能应用。物模型作为关键引擎,通过属性、事件和行为三大要素统一设备交互,解决协议碎片化问题,降低开发成本。可视化工具支持物模型快速定义与管理,助力智能零售、工业检测等场景落地。未来,物模型将加速物联网从“连接”向“智能”演进,成为生态构建的核心驱动力。原创 2025-06-18 11:14:19 · 523 阅读 · 0 评论 -
Android System UI 深度解析:从架构演进到车载 / TV 场景的全维度定制
本文全面解析 Android System UI 的架构设计、功能演进及场景化定制,揭示其作为安卓系统核心交互层的技术特性与生态价值。原创 2025-05-22 19:33:41 · 1290 阅读 · 0 评论 -
【AIoT】智能硬件GPIO通信详解(二)
在智能零售领域,无人售货机通过AI技术升级为智能柜,其设备控制的底层通信架构基于串口或GPIO接口,构建起单机设备的本地控制能力。而终端设备的入网通信,则需依赖物联网核心协议(如MQTT)与互联网协议(如HTTP)的协同:前者实现设备与云端的轻量化双向通信,后者支撑业务层的数据交互。其中,MQTT作为设备接入物联网的核心协议,为设备联网控制奠定了基础。原创 2025-04-16 21:42:23 · 601 阅读 · 0 评论 -
【AIoT】智能硬件GPIO通信详解(一)
在生产线监测中,DI(数字输入)引脚读取电机转速传感器的脉冲信号,DO(数字输出)引脚则驱动继电器控制阀门开闭。类似地,温湿度传感器通过 GPIO 传输数据至 MCU,经处理后控制空调或加湿器,实现环境的自主调节。在物联网、工控机与微控制器(MCU)的控制系统中,通用输入输出(GPIO)接口如同神经末梢般存在,将数字指令转化为物理世界的感知与行动。代码的主要功能是控制 GPIO 引脚(这里是 GPIO38),让连接到该引脚的 LED 每隔一秒闪烁一次,总共闪烁 100 次,最后释放该 GPIO 引脚。原创 2025-03-08 23:13:51 · 328 阅读 · 0 评论 -
并口、串口和GPIO口区别
另外,为了使用的方便,很多mcu把glue logic等集成到芯片内部,增强了系统的稳定性能,比如GPIO接口除去两个标准寄存器必须具备外,还提供上拉寄存器,可以设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出。另外需要注意的是,对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错,目前,并行接口主要作为打印机端口等。原创 2024-07-06 18:10:12 · 1307 阅读 · 0 评论 -
Kotlin协程使用详解
协程的挂起可以理解为协程中的代码离开协程所在线程的过程,协程的恢复可以理解为协程中的代码重新进入协程所在线程的过程。而恢复这个功能是协程的,如果你不在协程里面调用,恢复这个功能没法实现,所以也就回答了这个问题:为什么挂起函数必须在协程或者另一个挂起函数里被调用。因为一个挂起函数要么在协程里被调用,要么在另一个挂起函数里被调用,所以不管是直接还是间接地,总是会在一个协程里被调用的。协程范围,指的是协程内的代码运行的时间周期范围,如果超出了指定的协程范围,协程会被取消执行。都不对,我们挂起的对象是协程。原创 2024-07-06 17:41:00 · 1140 阅读 · 0 评论 -
Android内存碎片化调优
在Android系统中,内存碎片化是指内存中存在很多小块的空闲内存,这些内存块之间不连续,难以找到足够大的连续内存块来满足某些大型对象的内存分配需求。通过优化内存使用、采用合适的内存管理策略以及定期清理内存,可以有效地减少内存碎片化并提升系统的性能和稳定性。在实际应用中,你可能需要在关键的内存分配操作前调用内存压缩,例如在Bitmap的分配和回收过程中,以保持内存的连续性。另一种是空闲分散的内存页,凑不齐一个组物理地址连续的空闲内存页,就没办法分配了,这些散落的内存页被称为。原创 2024-05-26 16:06:52 · 721 阅读 · 0 评论 -
Jetpack Compose 初探
是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的Kotlin API,可以帮助您简化并加快 Android 界面开发。与传统的XML布局文件和Java代码相比,采用了声明式的方式来构建用户界面,提供了一种更简洁、更直观的UI开发体验。围绕可组合函数构建,这些函数允许开发者以程序化方式定义应用的界面,只需描述应用界面的外观并提供数据依赖项,而不必关注界面的构建过程。原创 2024-05-15 18:48:18 · 375 阅读 · 0 评论 -
重新认识Flutter跨平台技术(下)
首先 Skia 肯定是一个优秀的通用 2D 图形库,例如 Google Chrome 、Android、Firefox 等设备都是用了 Skia ,但是也因为它的「通用性」,所以它不属于 Flutter 的形状,它无法专门针对 Flutter 的要求去进行优化调整,例如 Skia 附带的许多功能超出了 Flutter 的要求,其中一些可能会导致不必要的开销并导致渲染时间变慢,而目前来看,Skia 的通用性给 Flutter 带来了性能瓶颈。然后,框架会将可渲染的对象缝合在一起,组成可渲染对象树。原创 2024-05-12 18:59:33 · 301 阅读 · 0 评论 -
重新认识Flutter跨平台技术(上)
Flutter 是一个跨平台的 UI 工具集,它的设计初衷,就是允许在各种操作系统上复用同样的代码,例如 iOS 和 Android,同时让应用程序可以直接与底层平台服务进行交互。如此设计是为了让开发者能够在不同的平台上,都能交付拥有原生体验的高性能应用,尽可能地共享复用代码的同时,包容不同平台的差异。在开发中,Flutter 应用会在一个 VM(程序虚拟机)中运行,从而可以在保留状态且无需重新编译的情况下,热重载相关的更新。原创 2024-05-11 18:47:41 · 1252 阅读 · 1 评论 -
深度解析Android 14新特性
Android 14是谷歌公司于2023年5月11日正式发布的一款操作系统。这款新系统无论从ROM角度还是应用程序(App)角度,都带来了多方面的提升和改进。原创 2024-05-09 20:04:27 · 1312 阅读 · 1 评论 -
重新认识Kotlin语言特性
Kotlin 是一种静态类型的开源编程语言,它既支持面向对象的编程,又支持函数式编程。Kotlin 提供的语法和概念与其他语言(包括 C#、Java 和 Scala 等等)类似。Kotlin 的目标并不是独树一帜,而是从几十年的语言发展中汲取灵感。它以变体的形式存在,这些变体以 JVM (Kotlin/JVM)、JavaScript (Kotlin/JS) 和原生代码 (Kotlin/Native) 为目标。原创 2024-05-07 13:38:43 · 286 阅读 · 0 评论 -
Android面试-Java基础
1. 九种基本数据类型的大小,以及他们的封装类。java中有八种基本数据类型,int,double,long,float,short,byte,character,boolean,void;他们对应的封装类型是:Integer ,Double ,Long ,Float, Short,Byte,Character,Boolean,Void;2. Switch能否用string做参数?...原创 2016-10-17 00:02:55 · 1358 阅读 · 0 评论 -
Android面试-JVM
分为栈,堆,方法区,方法区中存放.class文件的内容和静态成员以及类型数据,栈存放引用,堆存放实例化的对象。堆内存中的这些分区在Java的垃圾回收机制中扮演着重要的角色。* Eden区是Java堆内存中的年轻代(Young Generation)的一部分,用于新对象的分配。* 当程序创建新对象时,这些对象首先会被分配到Eden区。* Eden区的大小是固定的,当Eden区满时,会触发一次Minor GC(年轻代垃圾回收),以清理不再使用的对象,并尝试将存活的对象移动到Survivor区。原创 2016-10-17 10:17:05 · 1122 阅读 · 0 评论 -
Android面试-网络知识
OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)数据链路:PPP、FR、HDLC、VLA...原创 2017-06-01 20:42:27 · 3051 阅读 · 1 评论 -
Android面试-数据结构与算法
链表与数组数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组元素在栈区,链表元素在堆区;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。堆、栈、队列① 堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。② 栈就是一个桶...原创 2017-06-02 12:32:41 · 5597 阅读 · 0 评论 -
Android面试--高级知识
在Android开发中,自定义View的机型适配是一个重要的问题,因为不同的设备和屏幕尺寸可能会对View的显示和布局产生不同的影响。以下是一些建议和策略,帮助你在创建自定义View时考虑机型适配:使用dp单位而非px使用dp(密度无关像素)作为自定义View的尺寸单位,而不是px。dp单位会根据设备的屏幕密度进行自动转换,确保在不同设备上显示的一致性。考虑屏幕尺寸和密度在自定义View的构造函数或布局文件中,可以通过获取屏幕的密度和尺寸信息,并据此调整View的属性。支持不同屏幕方向。原创 2017-06-02 15:12:58 · 2567 阅读 · 0 评论 -
Android 9适配经验总结
但对于需要应用正常启动后才能对广播进行正确处理的场景,则应用使用动态注册的方式,这时如果采用静态注册的方式,在应用没有启动时,收到广播可能不会得到正确的处理,同时都采用静态注册的方式也会影响广播传递的效率,因为很多未启动的应用也会被广播唤醒。采用代码中动态注册广播的方式不仅是 Android9 系统的要求,也是一种比较好的开发习惯,这有利于对广播的使用进行控制,在应用功能已经初始化完成的时候添加广播的监听,确保广播到来时的功能执行能正常进行。最好的适配方式是修改所有的网络接口,改为 https 协议;原创 2023-03-03 20:24:11 · 1151 阅读 · 0 评论 -
车载开发-Android Automotive平台
Android Automotive是一个基于Android操作系统的开源平台,专为车载信息娱乐系统设计。它利用了Android的通用框架、语言和API,以提供一个全栈、高度可定制的平台。Android Automotive不是Android的分支或并行开发,而是Android生态系统的一部分,与手机、平板电脑等安卓设备上的Android共享相同的代码库和存储库。该平台为车载信息娱乐系统和车机提供了开放性、自定义和规模化特性。原创 2024-05-04 13:48:34 · 864 阅读 · 1 评论 -
车载开发-操作系统介绍
车载操作系统(Automotive Operating System,简称车载OS)是管理和控制车载软件、硬件资源的程序系统,它支持汽车的上层软件开发、数据连接和人机界面(HMI)。车载操作系统与车控操作系统同属于汽车操作系统,但并不直接管理车辆动力、底盘、车身等基础硬件。管理车载系统的数据资源、硬软件,并控制应用程序的运行。提供多形式的人机界面,支持上层软件的运行。原创 2024-05-03 11:40:10 · 709 阅读 · 0 评论 -
Android面试-Java高级
每个处理器通过嗅探在总线上传播的数据来检测自己缓存的信息是不是过期了,当处理器发现自己缓存行对应的内存地址被修改了,就会将当前处理器的缓存行设置为无效状态,当处理器要对这个数据进行修改操作的时候,会强制重新从系统内存里把数据读到处理器缓存里。Java的异常体系是Java编程语言中的一个重要组成部分,用于处理程序运行时可能出现的各种异常情况。但是就算回写内存,如果其他处理器缓存的值还是旧的,在执行计算操作就会有问题,所以在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议。原创 2017-06-03 12:00:05 · 770 阅读 · 0 评论 -
Android TV框架TIF详解
Android TIF(Android TV input Framework)是Google向电视制造商提供了一套标准的API,用于创建Input模块来控制Android电视。这套API的底层实现的原理是aidl和provider,从而进行了跨进程通信。系统或第三方的应用可以通过TIF获得所有输入(input)的信源(输入的模块包括:搜台模块,MDMI模块,网络模块等),然后通过aidl切台输出到......原创 2019-10-26 10:27:02 · 3552 阅读 · 2 评论 -
机顶盒知识详解
机顶盒知识详解数字视频变换盒(英语:Set Top Box,简称STB),通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备;它可以将压缩的数字信号转成电视内容,并在电视机上显示出来;信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。机顶盒接收的内容除了模拟电视可以提供的图像、声音之外,更在于能够接收数据内容,包括电子节目指南、因特网网页、字幕等等;使用户能在现有电视机上观...原创 2016-10-24 00:32:25 · 18338 阅读 · 1 评论 -
Android TV 将Excel表格解析成json文件
Android TV开发,设置模块一般是一个菜单树,也即多级联动菜单,我们可以做成配置项文件,这样做的好处是,不需要根据每个客户需求去控制菜单列表里的菜单项显示隐藏,减少项目维护成本。那么这个配置项怎么去设计比较好呢?因为需求是产品控制的,我们希望配置项文件由产品来编写和维护,对于产品来说,我们让他去编写json配置文件或者xml文件,有点为难人,术业有专攻,他们更喜欢可视化操作,简单、直观,于是我...原创 2017-08-19 18:33:47 · 2881 阅读 · 0 评论 -
Android TV 遥控器全链路按键适配指南:从物理按键到应用响应
本文深入探讨了Android TV遥控器按键适配方案,涵盖红外和蓝牙遥控器的工作原理及完整适配流程。红外遥控部分详细介绍了从硬件调试、驱动适配到键值映射配置的方法,并提供了实用的调试命令。蓝牙遥控器部分解析了HID协议和报告描述符,给出内核层与Android层的适配代码示例。文章还介绍了游戏手柄、语音遥控器等特殊外设的适配技巧,并提供了系统级调试工具和内核级调试方法,为开发者提供了一套完整的Android TV输入设备适配解决方案。原创 2018-04-06 20:47:17 · 993 阅读 · 0 评论 -
Android打印机--TSC 标签打印
Android TSC标签打印指的是在Android设备上使用TSC(Thermal Scripting Code)标签打印机进行打印操作。TSC标签打印机通常用于打印各种标签,如条形码、二维码、文字、图片等,广泛应用于物流、仓储、零售、医疗等领域。原创 2017-05-15 12:15:51 · 15255 阅读 · 19 评论 -
Android打印机--没有设备驱动sdk,自己实现USB打印功能
Android下的设备调试,如果设备提供了驱动,按照厂家的驱动调试即可;设备未提供驱动,只能按照通用的方法进行调试。对于智能POS、收银机以及其他打印设备,如果厂商不提供打印相关sdk,那么打印功能怎么实现呢?其实我们可以基于USB通信机制,自己去实现打印驱动。整个实现流程如下初始化打印机:首先要获取USB管理器;其次要注册监听USB设备插拔变化和请求权限的广播;最后列出所有的USB设备,并且都请......原创 2017-05-10 19:44:45 · 20412 阅读 · 24 评论 -
Android打印机--小票打印格式及模板设置
小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式一般需要去查询对应打印机的API文档。原创 2017-04-07 16:00:10 · 22735 阅读 · 8 评论 -
Android打印机--蓝牙打印
关于Android蓝牙打印和网络打印,其实都是基于Socket通信机制实现的。但这两者在使用方式和实现细节上有所不同。原创 2017-04-06 15:56:15 · 5913 阅读 · 5 评论 -
解析Linux内核
Linux 内核剖析Linux 内核简介Linux 内核的属性Linux 内核的主要子系统系统调用接口进程管理内存管理虚拟文件系统网络堆栈设备驱动程序依赖体系结构的代码Linux 内核的一些有用特性Linux 内核简介我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。图 2. GNU/Linux 操作系统的基本体系结构...原创 2018-10-04 23:39:37 · 530 阅读 · 0 评论 -
Android 系统开发常用命令大全(六)
本文总结了Android系统常用的am和pm命令。am命令用于广播、服务、进程管理,包括发送广播、启动服务/Activity、杀进程等操作;pm命令用于包管理,支持查看、安装、卸载应用包及权限管理。这些命令为系统调试和日常维护提供了便捷工具,涵盖了从进程控制到应用管理的核心功能。原创 2019-02-18 20:27:41 · 1502 阅读 · 0 评论 -
嵌入式Linux启动流程
第一步:加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。第二步:读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot ......原创 2018-10-06 00:31:43 · 3934 阅读 · 0 评论 -
Linux 格式化U盘为ext4格式以及修复分区表方法
Linux 格式化U盘为ext4格式以及修复分区表方法原创 2015-11-25 18:43:11 · 15625 阅读 · 0 评论 -
Android 系统开发常用命令大全(四)
这篇文章汇总了常用的Linux系统管理命令,包括文件操作(创建软/硬链接、修改权限、搜索、重命名)、进程管理(查看、终止)、压缩解压(zip/unzip、tar)、系统信息查看(磁盘挂载、包信息)及时间同步等。重点介绍了ln创建链接、ps查看进程参数、kill终止进程、tar压缩解压等核心命令的使用方法及常用参数组合,适用于Linux系统日常维护和故障排查。原创 2019-02-18 19:34:58 · 656 阅读 · 0 评论 -
详细讲解Linux驱动程序
一 编写Linux驱动程序1.建立Linux驱动骨架Linux内核在使用驱动时需要装载与卸载驱动装载驱动:建立设备文件、分配内存地址空间等;module_init 函数处理驱动初始化卸载驱动:删除设备文件、释放内存地址空间等;module_exit函数处理退出包含这两个函数的两个宏的C程序文件也可看做是Linux驱动的骨架2.注册和注销设备文件任何一个Linux驱动都需...原创 2018-10-10 08:50:28 · 1088 阅读 · 0 评论
分享