- 博客(68)
- 收藏
- 关注
原创 卡尔曼滤波算法简介与 Kotlin 实现
卡尔曼滤波(Kalman Filter)是一种基于线性系统状态空间模型的最优递归估计算法,由鲁道夫・E・卡尔曼于 1960 年提出。其核心思想是通过融合系统动态模型预测值与传感器观测值,在最小均方误差准则下实现对系统状态的实时最优估计。该算法广泛应用于导航、目标跟踪、信号处理等领域,尤其适合处理带有噪声的动态系统数据融合问题。
2025-05-10 19:27:43
1200
1
原创 Android Service 从 1.0 到 16 的演进史
Android Service 自 1.0 诞生,早期形成基础运行机制。随后不断迭代优化,5.0 引入 JobScheduler 改善任务调度;6.0 起,为保障省电、隐私与性能,持续收紧后台权限,推出 Doze 模式、Scoped Storage 等;8.0 后强制使用前台服务或 JobScheduler 管控后台;10.0 后推荐 WorkManager 替代传统服务;16.0 进一步优化服务管理。整体朝着高效、安全、省电方向演进。
2025-05-06 18:46:14
1340
1
原创 蓝桥杯必考算法解析及真题实战(Kotlin 实现)
蓝桥杯常考算法丰富。搜索算法中,深度优先搜索(DFS)沿路径深入,回溯找解,常用于图遍历、连通性判断 ;广度优先搜索(BFS)逐层扩展,求无权图最短路径拿手 。动态规划将复杂问题拆为子问题,利用重叠子问题与最优子结构特性,通过状态转移方程求解,像背包、最长公共子序列问题都靠它。贪心算法每步做当前最优选择,处理活动安排、哈夫曼编码等问题有效 。分治算法分解大问题为小问题,递归求解后合并,归并排序、快速排序是典型应用 。图算法里,迪杰斯特拉算法、弗洛伊德算法算最短路径,普里姆算法、克鲁斯卡尔算法求最小生成树 。
2025-05-06 18:38:28
563
原创 【解决】superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner
本文给出了superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner异常的原因及解决方法,希望能够以对您有所帮助
2025-04-30 19:10:18
248
原创 拥抱 Kotlin Flow
Kotlin Flow 是 Kotlin 协程生态中处理异步数据流的核心工具,它提供了一种声明式、轻量级且与协程深度集成的响应式编程模型。与传统的 RxJava 相比,Flow 更简洁、更易于维护,尤其在 Android 开发中已成为主流选择。本文将从基础概念到高级特性全面解析 Flow,结合实战案例帮助读者深入掌握这一强大工具。
2025-04-30 19:03:41
1190
原创 【解决】编译时出现A problem occurred evaluating initialization script.
本文给出了编译时出现A problem occurred evaluating initialization script.问题的怀疑原因并且给出了实际的解决办法
2025-04-26 09:56:06
158
原创 【解决】trying to draw too large(147456000bytes) bitmap
本文给出了“trying to draw too large(147456000bytes) bitmap”问题出现的原因以及对应的解决方法
2025-04-26 09:47:23
256
原创 Android Build Variants(构建变体)详解
Android 构建变体(Build Variants)是强大且灵活的机制,由构建类型(如 debug、release)和产品风味(如免费版、付费版)组合而成。借助它,开发者能从同一代码库生成多个定制化的 APK 版本。在配置方面,可在 build.gradle 文件中定义构建类型和产品风味,同时能设置不同的属性和资源。通过构建变体,不仅能针对不同应用市场、客户群体、功能特性等定制应用,还能优化应用性能和大小,方便开发和测试。
2025-04-24 22:19:33
1476
2
原创 【解决】Android Gradle Sync 报错 Could not read workspace metadata
针对“Android Gradle Sync 报错 Could not read workspace metadata”问题本文提供了对应的解决方法,可能并不是最优,但至少亲测可解决
2025-04-24 21:26:37
446
原创 【解决】Kotlin代码编译时出现The following declarations have the same JVM signature
本文给出了“Kotlin代码编译时出现The following declarations have the same JVM signature”的解决方法 此问题一般比较常见
2025-04-24 21:21:10
131
原创 基于sherpa-onnx 安卓语音识别尝鲜
Sherpa是一个由 K2-FSA 团队 开发的 开源语音处理框架,旨在解决传统语音识别工具(如 Kaldi)在模型部署和跨平台适配中的复杂性问题。它通过整合现代深度学习技术和高效推理引擎,提供了从语音识别、合成到说话人识别的一站式解决方案,尤其在实时性、低资源消耗和跨平台兼容性方面表现突出。ONNX(Open Neural Network Exchange):即开放神经网络交换格式,是一种用于表示深度学习模型的开放标准文件格式。
2025-04-16 20:03:10
1470
原创 Sherpa简介
Sherpa 是一个由 K2-FSA 团队 开发的 开源语音处理框架,旨在解决传统语音识别工具(如 Kaldi)在模型部署和跨平台适配中的复杂性问题。它通过整合现代深度学习技术和高效推理引擎,提供了从语音识别、合成到说话人识别的一站式解决方案,尤其在实时性、低资源消耗和跨平台兼容性方面表现突出
2025-04-16 19:48:31
904
原创 【解决】Build failed with an exception.Initialization script C:\Users\x\AppData\Local\Temp\ijinit.gradle
Build failed with an exception.Initialization script C:\Users\x\AppData\Local\Temp\ijinit.gradle异常解决方法
2025-03-15 11:02:47
328
原创 Android HandlerThread
HandlerThread 是 Android 中一个非常实用的类,用于创建一个带有消息队列的后台线程,并通过 Handler 机制实现线程间的通信。可以方便地处理消息队列。它的主要目的是在一个单独的线程中处理耗时任务,避免阻塞主线程(UI 线程),从而提高应用的性能和流畅度。
2025-01-24 17:16:34
588
原创 Gson枚举序列化实现
众所周知,Json是无法传递枚举类型的,在对Json处理的过程中,可能大家或多或少都会遇到对于枚举处理的问题,当然解决方式也有很多种,本篇仅针对使用Gson处理Json时对于枚举问题给出一种解决方式,可能并不能适用于小伙伴们实际应用的所有场景,但作为借鉴也算是一个不错的选择。
2025-01-23 20:16:40
1057
原创 UnsupportedClassVersionError解决
java.lang.UnsupportedClassVersionError 错误表明 .class 文件是用较新的 Java 版本编译的,而运行时的 Java 环境版本较低,无法识别该字节码版本
2025-01-22 20:20:10
348
原创 SO库符号冲突
SO库符号冲突是指在链接或运行时,多个动态库(.so 文件)中存在相同名称的全局符号(如函数名、变量名等),导致链接器或运行时无法确定应该使用哪个符号的定义。本文
2025-01-22 20:13:23
598
原创 Flutter 和 Compose Multiplatform对比
Flutter和ComposeMultiplatform跨平台实现的简单选型对,对于有需要的同学可以进行参考,选择哪个框架取决于具体项目需求、团队技术栈和开发者的个人偏好。如果项目需要高性能和丰富的插件生态,Flutter是一个不错的选择。如果项目需要在多个平台上共享UI代码,并且团队熟悉Kotlin,ComposeMultiplatform也是一个很好的选择。
2025-01-19 16:33:20
1116
原创 Jetpack 介绍
Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳实践、减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。
2025-01-19 16:24:39
1013
原创 Android 屏幕采集并编码为H.264
在Android平台上实现屏幕采集并编码为H.264,需要通过MediaProjection API请求用户授权屏幕采集,适配不同安卓版本,使用MediaCodec进行视频硬编码,配置编码参数,并通过链式调用和配置将采集的屏幕数据编码为H.264格式,最后可以将编码后的视频数据推送到RTMP或RTSP服务,用于直播或视频会议等应用场景。
2024-12-06 20:39:08
1648
原创 解决Error resolving plugin xxx
"Error resolving plugin" 通常表示在处理插件相关操作时出现了问题,无法正确解析插件。本文给出了常见场景中一种,希望能够帮到有需要的朋友。
2024-12-04 21:06:11
960
原创 Android H.264解码实现
Android MediaCodec 是安卓系统中处理音视频编解码的关键组件,其工作流程涵盖配置、数据输入、解码及输出等环节,具备利用硬件加速提升性能、接口统一便于开发等优势,广泛应用于视频播放、音视频编辑、实时通信等场景,但使用时需注意不同安卓版本的兼容性以及做好资源管理,避免出现适配和资源相关问题。
2024-12-04 20:27:21
1369
原创 Android Camera2采集并编码为H.264
Camera2与MediaCodec的结合在Android平台上提供了一种强大的视频处理解决方案。Camera2 API负责高效地从摄像头采集原始视频帧,而MediaCodec API则负责将这些帧实时编码为H.264格式,这是目前最广泛支持的视频编码标准之一。这种组合不仅利用了硬件加速来提高编码性能,减少CPU负担,还确保了视频的高质量输出和良好的兼容性。通过精确控制编码参数,可以根据应用需求调整视频的比特率、帧率和分辨率,实现定制化的视频录制和处理。
2024-11-30 08:43:10
1469
原创 Android 基于Camera2 API进行摄像机图像预览
Android Camera2 API 是从 Android 5.0(Lollipop)开始引入的,用以取代旧的 Camera API。Camera2 提供了更强大和灵活的相机控制能力,允许开发者实现更多的相机功能,如手动对焦、手动曝光、原生 RAW 图像捕获等。该博文是博主近期准备实现摄像机编解码系列中的第一篇、如果对此感兴趣的话,欢迎大家关注或者留言,共同进步。
2024-11-23 10:10:40
1405
原创 CameraWrapper
基于Camera2 API实现的摄像机预览功能封装,主要是对自己的代码片段做一个封装,也给有需要的同学,可以直接拿来用。
2024-11-23 09:55:58
229
原创 LinkedTreeMap cannot be cast to class XXX问题解决
这个异常表面是类型转换错误,但是实际原因是Gson转List时Item类型没转换对,常见于对Gson自行封装的通用json转List时,因为Gson转List时必须指定List的Item类型,如果无法识别就会自动将Item转成LinkedTreeMap。
2024-11-17 17:17:20
787
原创 Jetpack 之 Ink API初探
近期看到谷歌官方推文有一篇关于Jetpack Ink API的文章,随即进行了了解和研究,该SDK主要就是低延时的手写绘制,比如通过手指或者触控笔在安卓设备上面进行笔记记录或者在安卓设备上面进行素描之类类似于纸张上面的操作。当然了可能现在市场上已经存在了此类APP,或者此类的SDK,具体实现方式可能不一,有通过Canvas实现的或者OpenGL实现的,但如果没有系统层面支持的话,一般书写延迟都会相对较高,特别是屏幕越大,越明显,但博主对该SDK书写进行了验证,确实非常丝滑。
2024-11-14 21:31:13
1405
1
原创 主动测量View的宽高
熟知UI显示流程的同学可能都知道,View要获取到尺寸,必须经过测量才能拿到,而测量则是UI显示流程的一个环节,所以按照成正常情况想要获取到View的尺寸,就需要至少等到View显示过程中的测量环节结束才能拿到。但是在开发过程中,可能有一些小众场景,为了显示效果,需要在View显示流程触发之前,对未固定尺寸的View根据内容获取其宽高,进而做其他显示上处理,如果有这样需求的同学,那么通过本篇你将学会如何在View显示流程触发之前获取View的宽高。
2024-11-13 20:08:10
442
原创 解决 Attempt to read from field ‘android.os.MessageQueue android.os.Looper.mQueue‘ on a null object ..
本文阐述了Handler创建时Looper为空的场景,应该很少见,但是如果出现的话,可能也会让人很费解,会让人摸不着头脑,本文给出了常见情况,希望能够给您带来一些帮主。
2024-11-07 21:28:21
430
原创 Android 解决Java和Kotlin JDK编译版本不一致异常
因为java编译使用的JDK版本是1.8,而kotlin使用的版本是17,因此出现了该异常,一般常见于Android Studio版本升级之后默认JDK版本变化导致。
2024-11-07 21:21:41
591
原创 浅谈特朗普上台后对IT行业的影响
想必大家都已经知晓,特朗普在2024年再次上台,本篇文章主要来自网络,如果不惜请勿喷,主要瞎掰下特朗普上台后对IT行业的影响
2024-11-06 19:20:53
404
原创 Android Studio 多工程公用module引用
在项目开发的过程中,有时候一个外部Module可能会被多个工程依赖,如果按照正常的安卓导入Module的方式的话,会将外部Module拷贝到本工程,然后引入,实际上已经与原Module没关系了,这样本身没有什么问题,但是如果想要通过一处修改多处生效的话,可能就需要来回拷贝代码了,这样就会非常的麻烦。那么如果您也有这样需求的话,那么该篇文章肯定会帮到你。
2024-11-05 22:02:10
449
1
原创 Android 依赖统一配置管理(Version Catalogs)
通过依赖统一配置管理(Version Catalogs),您能够以可扩容的方式添加和维护依赖项和插件。使用 Gradle 版本目录,您可以在拥有多个模块时更轻松地管理依赖项和插件。您不必对各个 build 文件中的依赖项名称和版本进行硬编码,也不必在每次需要升级依赖项时都更新每个条目,而是可以创建一个包含依赖项的中央版本目录,各种模块可在 Android Studio 协助下以类型安全的方式引用该目录。
2024-11-05 21:57:22
1730
原创 Dijkstra算法初探
Dijkstra算法是由荷兰计算机科学家艾兹格·戴克斯特拉(Edsger W. Dijkstra)在1956年提出的,用于在图中找到单个源点到所有其他顶点的最短路径的算法。这个算法特别适用于具有非负边权重的图,它可以有效地解决单源最短路径问题(Single-Source Shortest Path Problem, SSSP)。Dijkstra算法在许多领域都有应用,例如在网络路由在网络中找到数据传输的最短路径或者在地图服务中计算两点之间的最短行驶路线等。
2024-11-01 07:30:00
651
原创 解决IllegalAccessException: java.lang.Class<xxx.xActivity> is not accessible
Activity 访问修饰符非public导致,常见于Kotlin代码转Java,属于灯下黑问题,常常花了大把时间怀疑了一通后,定位到问题原因后开始骂娘(还是要保持良好心态)。。。
2024-10-29 21:46:17
278
原创 Android 部署web服务器
AndServer 是一个轻量级的 Android Web 服务器库,它允许开发者在 Android 设备上构建和运行 Web 应用程序。AndServer 是由严振杰开发的一个轻量级 Android Web 服务器库,它类似于 Apache 或 Tomcat,但是专门为 Android 设计,无需额外的第三方库或硬件编译。它体积小、使用简单,支持动态网站、静态网站以及 HTTP API。
2024-10-29 21:35:06
2121
原创 Android NSD局域网发现服务
网络服务发现(NSD)是一种机制,它允许设备在本地网络上相互发现并提供服务。在Android平台上,NSD API使得应用可以轻松地发现和注册网络上的服务。
2024-10-28 20:01:17
700
原创 Android gradle和maven国内镜像地址
在Android 开发中经常会出现gradle或者maven依赖下载过慢或者失败的情况,如果出现这种情况的话,那就需要使用国内镜像地址,梯子另算,本文提供了腾讯的gralde国内镜像地址以及阿里的国内maven镜像地址,并且一并提供了在Android中的配置方式,仅供参考。
2024-10-27 10:33:53
5310
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人