- 博客(169)
- 资源 (1)
- 收藏
- 关注
原创 使用安卓NDK 交叉编译动态库、静态库基础入门
本篇博客将详细介绍如何在 Windows 环境下使用 Android NDK 交叉编译 C 文件,生成静态和动态库,并在 Android 项目中使用这些库。编译器概述特点GNU项目开发的编译器集合,支持多种编程语言,包括C、C++、Fortran等。开源免费:遵循GPL许可,广泛应用于开源项目。跨平台支持:支持Linux、Windows、macOS等多种操作系统和硬件架构。强大的优化能力:提供多种优化选项,生成高效的目标代码。G++GCC中的C++编译器驱动程序,专门用于编译C++源代码。
2024-12-31 14:26:15
2166
原创 uniapp uts插件实现AIDL与原生安卓通信
上周刚完成uniapp原生插件的开发调试,正兴冲冲地去上架,结果竟告知官方不再接收原生插件了!TNND,我搞了几天,到最后发现做的都是无用功 /(ㄒoㄒ)/~~莫得办法,谁让人家是官方呢,研究uts插件吧!不看不知道,一看都是坑,人家是摸着石头过河,我简直是摸着河床过河!这UTS语法简直了!!!首先你要了解安卓的AIDL,其次要了解Kotlin语言,因为UTS和Kotlin很像,学起来不至于你崩溃😆uniapp Android 原生插件开发(Module 扩展为例·2022)
2024-12-05 17:45:47
2556
原创 浅谈网络基础知识
IPv6(Internet Protocol version 6)是下一代 IP 协议,设计用来取代 IPv4。IPv6 地址是。
2024-12-04 16:47:05
1986
原创 重学 Android 自定义 View 系列(九):侧边字母选择器
本文来实现一个侧边字母选择器,很常见的一个控件,和上篇文章星星评分用到的关键技术点类似,难度不大,本篇再来温故知新一下。难度不大,前面文章和接下来几篇文章都是打基础的,只有基础打牢了,遇到高级View才能不发怵,🤭。再会!
2024-11-28 23:27:19
1132
原创 实现uniapp开发安卓应用使用AIDL与原生安卓通信
最近公司有开发原生插件,让uniapp与原生安卓使用AIDL通信的需求,奈何本人是原生开发,没有接触过uniapp啊,遂学,从官方文档到百度各种搜索,大约三天时间终于调通,属予作文以记之~技术前提 要有一定的原生安卓及AIDL开发经验,不至于你会看懵逼。在开发中遇到任何问题,请仔细对照上面链接步骤进行操作,官方文档还没有他的清晰。
2024-11-27 16:59:24
1489
原创 重学 Android 自定义 View 系列(八):星星评分控件(RatingBar)
本节实现一个常见的星星评分控件,广泛应用于各种评价类应用中,比如电影评分、商品评价等。难度不大,直接开搂!
2024-11-25 23:11:24
914
原创 分析android :The binary version of its metadata is 1.8.0, expected version is 1.5.1.等系列问题
当打包项目时会出现标题错误,有时候会弹出此错误但不影响打包,有时候会导致直接打包失败但可以直接在AS中安装,很是头大。以我报错内容为例:【android其元数据的二进制版本为1.8.0,预期版本为1.5.1】,刚开始以为项目中有使用了的版本呢,结果一顿搜索下来并未发现 此版本的任何信息?心里一万个草泥马狂奔。开始百度~之前遇到这种问题,大都是咔咔一顿复制粘贴,又是强制使用某个Kotlin版本又是不影响打包就忽略报错,想解决又心有余而力不足,事实证明,只要慢慢分析,就没有解决不了的问题,哈哈,再会!
2024-11-22 16:57:37
1482
原创 重学 Android 自定义 View 系列(七):仿58同城加载动画
本文将实现早期58同城一个带有弹跳效果的加载动画,且结合图形变换(圆形变正方形、正方形变三角形等)实现一种动态、富有表现力的加载效果。一个很有意思的自定义View,在这篇文章中你可以学到到路径使用,安卓动画组合使用等知识。再会!
2024-11-20 16:05:26
1083
原创 重学 Android 自定义 View 系列(六):环形进度条
- 进度条的最大值 --> < attr name = " maxProgress " format = " integer " /> < attr name = " progress " format = " integer " /> < attr name = " circleBackgroundColor " format = " color " />
2024-11-13 18:49:56
1995
2
原创 重学 Android 自定义 View 系列(五):文字变色的应用
上一篇介绍了文字变色的原理,本篇文章就简单介绍下其应用。原理都掌握了,应用还不是手拿把掐😁重学 Android 自定义 View 系列(四):文字变色结束,睡觉!wolai。
2024-11-12 22:33:46
501
原创 安卓属性动画插值器(Interpolator)详解
插值器(Interpolator)是用来控制动画执行速率的工具。在安卓的动画框架中,插值器主要用于指定动画从开始到结束的时间进度曲线。简单来说,插值器控制了动画的“快慢”,即时间与进度之间的关系。安卓提供了一系列内置的插值器,可以帮助开发者更好地控制动画的节奏,开发者也可以通过自定义插值器来实现更独特的效果。
2024-11-09 17:06:34
2639
原创 Android JNI 技术入门指南
JNI是 Java 与其他编程语言(通常是 C 或 C++)之间的接口,允许 Java 代码与底层的本地代码进行交互。通过 JNI,我们可以在 Java 代码中调用本地(native)方法,或者让本地代码调用 Java 方法。之前一直对JNI望而却步,真正学过后回头看看,也不是那么的难,难的是你不主动去学。所有伟大,都源于一个勇敢的开始!共勉!
2024-11-09 16:47:04
2000
原创 重学 Android 自定义 View 系列(三):自定义步数进度条
本篇文章主要是实现仿QQ步数View,很老的一个View了,但技术永不落后,开搂!为了使该控件在 XML 布局文件中可配置,我们需要定义一些自定义属性,例如外圈颜色、内圈颜色、边框宽度、文本大小和文本颜色。这些属性可以通过文件来定义:
2024-11-09 14:39:33
1108
原创 重学 Android 自定义 View 系列:动手实现专属 TextView
前面一篇介绍了自定义View的基础概念(皮毛),接下来全部是自定义View实战,让我们一起开启自定义View之旅吧!在中,我们定义了三个自定义属性:xText(文本内容)、xTextColor(文本颜色)、xTextSize(文本大小)。
2024-11-07 14:48:46
1333
原创 重学Android:自定义View基础(一)
作为一名安卓开发,也被称为大前端,做一个美观的界面,是我们必备的基础技能,可能在开发中我们最常用的是系统自带的View,因为他能满足绝大部分需求,难一点的我们也可以上Github上找个三方库使用,少数情况下会让我们进行自定义View,当然这不代表着我们可以不去掌握其原理,因为它是通往中高级程序员的必经之路,也是大厂面试的热门知识,只有熟练掌握其核心原理,才能让我们在后续的开发中游刃有余。
2024-11-05 14:49:36
1247
原创 重学Android:从位运算到二进制表示(零)
以下内容针对非科班同学,可以快速掌握位运算和二进制表示等计算机基础运算知识,看过源码的同学都知道,源码中大量运用了位运算知识,如果你对这方面不了解的话,看起来是比较困难的,如果你工作接触到蓝牙数据,串口数据收发等内容,这方面更是你必须了解的。
2024-11-05 14:23:34
1303
原创 在Android中,将 .cpp 文件编译成共享库(.so 文件)
一般在AS你新建C++项目会默认如下结构目录,要是用现有项目,你也可以手动创建。点击 Android Studio 顶部的。文件中,确保添加 CMake 的支持。的文件,该文件包含编译共享库的指令。,因为在JNI开发中,看到过它的影子。在 cpp 文件夹中创建一个名为。过时了,一般在老项目中比较常见。按钮,确保你的项目能够识别。在 app 目录下的。
2024-11-01 18:17:45
1370
4
原创 技术成神之路:二十三种设计模式(导航页)
设计原则/模式链接面向对象的六大设计原则技术成神之路:面向对象的六大设计原则创建型模式单例模式建造者模式原型模式工厂方法模式抽象工厂模式行为型模式策略模式状态模式责任链模式观察者模式备忘录模式迭代器模式模板方法模式访问者模式结构型模式享元模式中介者模式代理模式组合模式适配器模式桥接模式装饰模式外观
2024-10-24 11:23:38
568
原创 技术成神之路:设计模式(二十三)解释器模式
解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达式的场景。解释器模式定义了一种语言的文法表示,并定义一个解释器用来解释语言中的句子。解释器模式适用于简单的语法解析和解释场景,但不适合复杂的语法结构。它通过类和对象的组合,灵活定义和扩展语法结构。至此,23种设计模式告一段落。
2024-10-24 11:09:52
935
原创 技术成神之路:设计模式(二十二)命令模式
命令模式(Command Pattern)是一种行为设计模式,允许将请求(命令)封装为对象,从而使您可以使用不同的请求、队列或记录请求日志,以及支持可撤销操作。命令模式将一个请求封装为一个对象,从而能够参数化其他对象以便于请求的发起、排队或日志记录。命令模式通过将请求封装为对象,提供了灵活的请求处理方式。它有助于实现请求的解耦、可撤销操作和请求日志。尽管它增加了类的数量,但在需要复杂请求处理的系统中,它的优势是显而易见的。
2024-10-23 18:39:55
1170
原创 技术成神之路:设计模式(二十一)外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,使得子系统更容易使用。外观模式通过引入一个外观类,来简化与复杂系统的交互。这个外观类对外提供一个简单接口,而系统内部的复杂性被封装在外观类后面。外观模式在简化复杂系统的使用和降低系统耦合度方面发挥了重要作用。通过提供一个高层接口,外观模式隐藏了复杂的实现细节,使得系统更加易于理解和使用。
2024-10-22 11:14:35
999
原创 技术成神之路:设计模式(二十)装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变对象自身的情况下,动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。装饰模式通过创建一个装饰类,将功能动态地添加到被装饰类的实例中。装饰类与被装饰类实现相同的接口或继承相同的父类,这样装饰对象就可以取代被装饰对象。装饰模式是一种强大的设计模式,通过组合对象和装饰器的方式实现功能的动态扩展。它在实际开发中非常有用,能够有效地提高代码的灵活性和可维护性。
2024-10-10 16:17:23
1480
原创 技术成神之路:设计模式(十九)桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,通过将抽象部分与它的实现部分分离,使它们都能够独立地变化。它的核心思想是将接口与实现解耦,从而使得两者可以独立地变化。桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一个强大且灵活的设计模式,通过将抽象与实现分离,降低了系统的耦合度和复杂性。虽然引入了额外的抽象层,但在需要高度灵活性和可扩展性的场景中,它提供了一种优雅的解决方案。在实际开发中,合理使用桥接模式能够有效提升系统的可维护性和可扩展性。
2024-09-30 11:46:06
1399
2
原创 技术成神之路:设计模式(十八)适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类可以协同工作,通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容而无法一起工作的类可以一起工作。适配器模式是一种结构型设计模式,通过将一个类的接口转换为客户端期望的接口,使得原本不兼容的类可以一起工作。它主要解决接口不兼容的问题,提高代码的复用性和灵活性。
2024-09-29 15:23:16
964
1
原创 技术成神之路:设计模式(十七)组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它使你能够将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式允许将叶子对象和组合对象(容器对象)统一处理。组合模式是一种强大的设计模式,适用于处理树形结构中的对象关系。通过将对象组合成树形结构,组合模式使得客户端可以统一地处理单个对象和组合对象,从而简化了代码逻辑和结构。然而,组合模式也增加了类的复杂性,需要在设计时权衡其优缺点。
2024-09-27 16:11:22
1221
原创 技术成神之路:设计模式(十六)代理模式
代理模式(Proxy Pattern)是一种结构性设计模式,它通过代理对象来控制对另一个对象的访问。代理对象在功能上与真实对象相似,但可以在访问真实对象前后添加一些额外的处理。代理模式常用于控制对某个对象的访问、延迟实例化、权限控制等场景。通过引入一个代理对象(Proxy)来控制对真实对象(RealSubject)的访问。代理对象与真实对象实现相同的接口,通过代理对象的接口调用,客户端可以间接地与真实对象进行交互。代理模式通过引入代理对象,为访问真实对象提供了一种灵活的控制手段。
2024-09-26 22:48:37
1062
原创 技术成神之路:设计模式(十五)中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的复杂通信和依赖。它通过引入一个中介者对象来封装对象之间的交互,从而使得对象之间不直接相互依赖,而是通过中介者进行通信。中介者模式将对象之间的通信封装到一个中介者对象中,使各对象不再直接引用彼此,从而减少对象之间的耦合度。中介者模式通过引入一个中介者对象,将对象之间的复杂通信逻辑封装起来,从而降低对象之间的耦合度,提高系统的可维护性和可扩展性。
2024-09-25 21:49:15
1268
原创 C语言基础
使用预处理器: #define 可以在程序中定义一个常量,它在编译时会被替换为其对应的值。使用**const**关键字:const 关键字用于声明一个只读变量,即该变量的值不能在程序运行时修改。#define 预处理器#define 常量名 常量值在程序中使用该常量时,编译器会将所有的PI替换为 3.14159。return 0;const 关键字const 数据类型 常量名 = 常量值;相对于Java 就算前面加了个const。
2024-09-20 19:03:39
2047
原创 技术成神之路:设计模式(十四)享元模式
享元模式(Flyweight Pattern)是一种结构性设计模式,旨在通过共享对象来有效地支持大量细粒度的对象。享元模式通过将对象状态分为内部状态(可以共享)和外部状态(不可共享),来减少内存使用和提高性能。享元模式通过共享对象来优化内存使用和性能,适合于需要创建大量相似对象的场景,但设计复杂性和状态管理需要谨慎处理。
2024-09-20 14:43:30
1059
原创 Flutter项目 flutter doctor检测报错:X cmdline-tools component is missing, X Android license status unknown.
这个错误是提示缺少组件,并且需要接受许可证。
2024-09-18 16:50:32
909
1
原创 从IPC摄像机读取视频帧解码并转化为YUV数据到转化为Bitmap
本文主要介绍根据IPC的RTSP视频流地址,连接摄像机,并持续读取相机视频流,进一步进行播放实时画面,或者处理视频帧,将帧数据转化为安卓相机同格式数据,并保存为bitmap。
2024-09-18 14:25:49
1315
1
原创 一个简易的并行任务调度器
当你需要在程序中处理大量同类型的耗时任务,并且需要监听每个任务的工作状态和任务的编号,能及时响应并处理错误,而且需要所有任务都执行完毕自动通知时,那么这个任务调度器就非常适合你!一个用Kotlin编写简易的串行任务调度器可以根据你的需求自由定义线程池最大线程数资源自动管理,超时自动释放资源,新加任务自动创建线程池。自定义超时时间,可以延迟线程池资源释放,等待新任务到来,合理利用。
2024-09-18 11:25:47
597
原创 技术成神之路:设计模式(十三)访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。访问者模式定义了一个访问者接口,它包含了访问不同元素的操作方法。具体的元素类接受访问者并调用相应的访问方法。通过这种分离,新增的操作可以直接通过访问者来实现,而不需要修改元素类。访问者模式是一种强大的设计模式,可以方便地向对象结构中添加新的操作,而无需修改对象结构本身。
2024-09-11 22:44:46
1393
原创 记录H264格式数据解码YUV数据转Bitmap后图像红蓝颠倒问题
起初,看到画面正常显示后,就没太在意图像的内容,直到看见蓝色瓶的可口可乐(实际是红色的),事情好像不太对,后续发现所有红色的东西在画面中都变成了蓝色,然后算法识别的结果也不太好,才发现了问题的严重性。比如说,NV21和YUV420SP的Y排列相同,UV则相反。给你YUV420SP,你当作NV21保存JPG,就会 发生红蓝颠倒。格式,供算法去处理图像,为了方便调试就将每帧数据又转成了。抱着试试的态度,那就把UV转换以下看看把,原神,启动!就简单记下吧,代码如下,从解码到转。正常了,好神奇,哈哈哈。
2024-09-10 16:09:45
605
原创 一文搞懂Android AIDL
AIDL(Android Interface Definition Language)用于在Android应用中实现进程间通信(IPC)。它允许不同应用或服务间的数据传递和方法调用,确保不同进程间能够相互访问和操作。通过AIDL,开发者可以定义一个接口,然后在服务端和客户端实现这个接口,实现跨进程的交互。背景上,AIDL主要解决了Android系统中的进程隔离问题,使得不同应用或进程能够安全有效地共享数据和功能。
2024-09-09 23:26:55
9190
4
原创 技术成神之路:设计模式(十二)模板方法模式
模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是指在一个方法中定义一个算法的骨架,并将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。模板方法模式通过在抽象类中定义一个操作的模板,而将具体步骤的实现留给子类,从而实现代码复用和灵活扩展。
2024-08-27 17:12:38
1282
原创 安卓将子模块打aar包,并将其远程依赖打包进去
这时你会发现aar包并不大,甚至只有几十kb,如果你的子moudle 没使用第三方依赖的话,你会发现使用时没什么问题,如果有第三方依赖的话,它还是不大,甚至编译期也不会报错 ,但你运行时就会报错依赖找不到。如果要在项目中依赖的话,确实没什么问题,因为它如果依赖了别的文件的话,会自动下载的,而打包成aar文件它就不会下载了,这时候就缺少了相关文件,怎么办呢?代码写的,好家伙,源码的和说明文档的写法不一样,懵了,就试着搞了一下,编译通过🤭,如过你照着使用文档弄,可以通过的话就忽略下面代码把!
2024-08-03 17:03:09
1940
原创 技术成神之路:设计模式(十一)迭代器模式
迭代器这个词听到并不陌生吧,我们再开发中遍历HashMap和HashSet的时候 用到的迭代器和这里的迭代器是一个概念,当然,这个模式不是教你如何去实现的,而是以了解为主。迭代器模式(Iterator Pattern)是一种行为型设计模式,它帮助我们在不暴露集合内部结构的情况下,可以顺序访问集合中的元素。它将集合对象的遍历行为抽象出来,放到一个迭代器对象中,这样可以使得遍历行为和集合对象的实现分离。提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。
2024-07-31 14:28:09
985
libopencv-info.so
2023-07-20
与元素类型 "item" 相关联的 "name" 属性值不能包含 '<' 字符 【annotations.zip】
2021-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅