- 博客(113)
- 资源 (1)
- 收藏
- 关注
原创 在Android中,将 .cpp 文件编译成共享库(.so 文件)
一般在AS你新建C++项目会默认如下结构目录,要是用现有项目,你也可以手动创建。点击 Android Studio 顶部的。文件中,确保添加 CMake 的支持。的文件,该文件包含编译共享库的指令。,因为在JNI开发中,看到过它的影子。在 cpp 文件夹中创建一个名为。过时了,一般在老项目中比较常见。按钮,确保你的项目能够识别。在 app 目录下的。
2024-11-01 18:17:45 613
原创 技术成神之路:二十三种设计模式(导航页)
设计原则/模式链接面向对象的六大设计原则技术成神之路:面向对象的六大设计原则创建型模式单例模式建造者模式原型模式工厂方法模式抽象工厂模式行为型模式策略模式状态模式责任链模式观察者模式备忘录模式迭代器模式模板方法模式访问者模式结构型模式享元模式中介者模式代理模式组合模式适配器模式桥接模式装饰模式外观
2024-10-24 11:23:38 445
原创 技术成神之路:设计模式(二十三)解释器模式
解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达式的场景。解释器模式定义了一种语言的文法表示,并定义一个解释器用来解释语言中的句子。解释器模式适用于简单的语法解析和解释场景,但不适合复杂的语法结构。它通过类和对象的组合,灵活定义和扩展语法结构。至此,23种设计模式告一段落。
2024-10-24 11:09:52 836
原创 技术成神之路:设计模式(二十二)命令模式
命令模式(Command Pattern)是一种行为设计模式,允许将请求(命令)封装为对象,从而使您可以使用不同的请求、队列或记录请求日志,以及支持可撤销操作。命令模式将一个请求封装为一个对象,从而能够参数化其他对象以便于请求的发起、排队或日志记录。命令模式通过将请求封装为对象,提供了灵活的请求处理方式。它有助于实现请求的解耦、可撤销操作和请求日志。尽管它增加了类的数量,但在需要复杂请求处理的系统中,它的优势是显而易见的。
2024-10-23 18:39:55 1074
原创 技术成神之路:设计模式(二十一)外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,使得子系统更容易使用。外观模式通过引入一个外观类,来简化与复杂系统的交互。这个外观类对外提供一个简单接口,而系统内部的复杂性被封装在外观类后面。外观模式在简化复杂系统的使用和降低系统耦合度方面发挥了重要作用。通过提供一个高层接口,外观模式隐藏了复杂的实现细节,使得系统更加易于理解和使用。
2024-10-22 11:14:35 918
原创 C++基础
变量定义不仅声明了变量的名字和类型,而且为其分配内存并可选地初始化变量。作用域类型可见性生存期示例全局作用域在整个程序中可见程序开始到结束局部作用域仅在函数或代码块内部可见控制流离开作用域时被销毁块作用域仅在大括号内可见控制流离开块时被销毁类作用域在类的所有成员函数中可见与类的实例一起存在命名空间作用域在命名空间内可见程序开始到结束使用#define预处理器。使用const关键字。5.6.1 #define 预处理器#define是一种预处理器指令,通常用于定义宏常量。
2024-10-17 15:37:24 928
原创 技术成神之路:设计模式(二十)装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变对象自身的情况下,动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。装饰模式通过创建一个装饰类,将功能动态地添加到被装饰类的实例中。装饰类与被装饰类实现相同的接口或继承相同的父类,这样装饰对象就可以取代被装饰对象。装饰模式是一种强大的设计模式,通过组合对象和装饰器的方式实现功能的动态扩展。它在实际开发中非常有用,能够有效地提高代码的灵活性和可维护性。
2024-10-10 16:17:23 1347
原创 技术成神之路:设计模式(十九)桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,通过将抽象部分与它的实现部分分离,使它们都能够独立地变化。它的核心思想是将接口与实现解耦,从而使得两者可以独立地变化。桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一个强大且灵活的设计模式,通过将抽象与实现分离,降低了系统的耦合度和复杂性。虽然引入了额外的抽象层,但在需要高度灵活性和可扩展性的场景中,它提供了一种优雅的解决方案。在实际开发中,合理使用桥接模式能够有效提升系统的可维护性和可扩展性。
2024-09-30 11:46:06 1260 1
原创 技术成神之路:设计模式(十八)适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类可以协同工作,通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容而无法一起工作的类可以一起工作。适配器模式是一种结构型设计模式,通过将一个类的接口转换为客户端期望的接口,使得原本不兼容的类可以一起工作。它主要解决接口不兼容的问题,提高代码的复用性和灵活性。
2024-09-29 15:23:16 889
原创 技术成神之路:设计模式(十七)组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它使你能够将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式允许将叶子对象和组合对象(容器对象)统一处理。组合模式是一种强大的设计模式,适用于处理树形结构中的对象关系。通过将对象组合成树形结构,组合模式使得客户端可以统一地处理单个对象和组合对象,从而简化了代码逻辑和结构。然而,组合模式也增加了类的复杂性,需要在设计时权衡其优缺点。
2024-09-27 16:11:22 1135
原创 技术成神之路:设计模式(十六)代理模式
代理模式(Proxy Pattern)是一种结构性设计模式,它通过代理对象来控制对另一个对象的访问。代理对象在功能上与真实对象相似,但可以在访问真实对象前后添加一些额外的处理。代理模式常用于控制对某个对象的访问、延迟实例化、权限控制等场景。通过引入一个代理对象(Proxy)来控制对真实对象(RealSubject)的访问。代理对象与真实对象实现相同的接口,通过代理对象的接口调用,客户端可以间接地与真实对象进行交互。代理模式通过引入代理对象,为访问真实对象提供了一种灵活的控制手段。
2024-09-26 22:48:37 964
原创 技术成神之路:设计模式(十五)中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,用于减少对象之间的复杂通信和依赖。它通过引入一个中介者对象来封装对象之间的交互,从而使得对象之间不直接相互依赖,而是通过中介者进行通信。中介者模式将对象之间的通信封装到一个中介者对象中,使各对象不再直接引用彼此,从而减少对象之间的耦合度。中介者模式通过引入一个中介者对象,将对象之间的复杂通信逻辑封装起来,从而降低对象之间的耦合度,提高系统的可维护性和可扩展性。
2024-09-25 21:49:15 1170
原创 C语言基础
使用预处理器: #define 可以在程序中定义一个常量,它在编译时会被替换为其对应的值。使用**const**关键字:const 关键字用于声明一个只读变量,即该变量的值不能在程序运行时修改。#define 预处理器#define 常量名 常量值在程序中使用该常量时,编译器会将所有的PI替换为 3.14159。return 0;const 关键字const 数据类型 常量名 = 常量值;相对于Java 就算前面加了个const。
2024-09-20 19:03:39 1717
原创 技术成神之路:设计模式(十四)享元模式
享元模式(Flyweight Pattern)是一种结构性设计模式,旨在通过共享对象来有效地支持大量细粒度的对象。享元模式通过将对象状态分为内部状态(可以共享)和外部状态(不可共享),来减少内存使用和提高性能。享元模式通过共享对象来优化内存使用和性能,适合于需要创建大量相似对象的场景,但设计复杂性和状态管理需要谨慎处理。
2024-09-20 14:43:30 840
原创 Flutter项目 flutter doctor检测报错:X cmdline-tools component is missing, X Android license status unknown.
这个错误是提示缺少组件,并且需要接受许可证。
2024-09-18 16:50:32 403
原创 从IPC摄像机读取视频帧解码并转化为YUV数据到转化为Bitmap
本文主要介绍根据IPC的RTSP视频流地址,连接摄像机,并持续读取相机视频流,进一步进行播放实时画面,或者处理视频帧,将帧数据转化为安卓相机同格式数据,并保存为bitmap。
2024-09-18 14:25:49 1094
原创 一个简易的并行任务调度器
当你需要在程序中处理大量同类型的耗时任务,并且需要监听每个任务的工作状态和任务的编号,能及时响应并处理错误,而且需要所有任务都执行完毕自动通知时,那么这个任务调度器就非常适合你!一个用Kotlin编写简易的串行任务调度器可以根据你的需求自由定义线程池最大线程数资源自动管理,超时自动释放资源,新加任务自动创建线程池。自定义超时时间,可以延迟线程池资源释放,等待新任务到来,合理利用。
2024-09-18 11:25:47 401
原创 技术成神之路:设计模式(十三)访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。访问者模式定义了一个访问者接口,它包含了访问不同元素的操作方法。具体的元素类接受访问者并调用相应的访问方法。通过这种分离,新增的操作可以直接通过访问者来实现,而不需要修改元素类。访问者模式是一种强大的设计模式,可以方便地向对象结构中添加新的操作,而无需修改对象结构本身。
2024-09-11 22:44:46 1256
原创 记录H264格式数据解码YUV数据转Bitmap后图像红蓝颠倒问题
起初,看到画面正常显示后,就没太在意图像的内容,直到看见蓝色瓶的可口可乐(实际是红色的),事情好像不太对,后续发现所有红色的东西在画面中都变成了蓝色,然后算法识别的结果也不太好,才发现了问题的严重性。比如说,NV21和YUV420SP的Y排列相同,UV则相反。给你YUV420SP,你当作NV21保存JPG,就会 发生红蓝颠倒。格式,供算法去处理图像,为了方便调试就将每帧数据又转成了。抱着试试的态度,那就把UV转换以下看看把,原神,启动!就简单记下吧,代码如下,从解码到转。正常了,好神奇,哈哈哈。
2024-09-10 16:09:45 327
原创 一文搞懂Android AIDL
AIDL(Android Interface Definition Language)用于在Android应用中实现进程间通信(IPC)。它允许不同应用或服务间的数据传递和方法调用,确保不同进程间能够相互访问和操作。通过AIDL,开发者可以定义一个接口,然后在服务端和客户端实现这个接口,实现跨进程的交互。背景上,AIDL主要解决了Android系统中的进程隔离问题,使得不同应用或进程能够安全有效地共享数据和功能。
2024-09-09 23:26:55 2617 1
原创 技术成神之路:设计模式(十二)模板方法模式
模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是指在一个方法中定义一个算法的骨架,并将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。模板方法模式通过在抽象类中定义一个操作的模板,而将具体步骤的实现留给子类,从而实现代码复用和灵活扩展。
2024-08-27 17:12:38 1127
原创 安卓将子模块打aar包,并将其远程依赖打包进去
这时你会发现aar包并不大,甚至只有几十kb,如果你的子moudle 没使用第三方依赖的话,你会发现使用时没什么问题,如果有第三方依赖的话,它还是不大,甚至编译期也不会报错 ,但你运行时就会报错依赖找不到。如果要在项目中依赖的话,确实没什么问题,因为它如果依赖了别的文件的话,会自动下载的,而打包成aar文件它就不会下载了,这时候就缺少了相关文件,怎么办呢?代码写的,好家伙,源码的和说明文档的写法不一样,懵了,就试着搞了一下,编译通过🤭,如过你照着使用文档弄,可以通过的话就忽略下面代码把!
2024-08-03 17:03:09 925
原创 技术成神之路:设计模式(十一)迭代器模式
迭代器这个词听到并不陌生吧,我们再开发中遍历HashMap和HashSet的时候 用到的迭代器和这里的迭代器是一个概念,当然,这个模式不是教你如何去实现的,而是以了解为主。迭代器模式(Iterator Pattern)是一种行为型设计模式,它帮助我们在不暴露集合内部结构的情况下,可以顺序访问集合中的元素。它将集合对象的遍历行为抽象出来,放到一个迭代器对象中,这样可以使得遍历行为和集合对象的实现分离。提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。
2024-07-31 14:28:09 895
原创 技术成神之路:设计模式(十)备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。通过备忘录模式,可以在程序运行过程中保存和恢复对象的某个状态,从而实现“撤销”等功能。备忘录模式在《设计模式》一书中的定义是:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式是一种非常实用的设计模式,它允许在不破坏对象封装性的前提下捕获和恢复对象的内部状态。
2024-07-26 11:50:12 1152
原创 获取手机当前信号强度(dbm/asu值)解决 getGsmSignalStrength()总是返回99问题
能看到这篇文章说明网上哪些获取 (dbm/asu值)不适合你,不是他们的代码不正确,而是不符合你的情况。当然如果你是安卓10+设备,并且为 LTE 网络 的情况下,那么就不能用了,你会发现。或其他网络类型,该方法可能返回无效值(如 99),代表未知或未报告的信号强度。对于 Android 10(API 级别 Q)设备,应该使用更新的 API,如。上面代码是网上大部分获取 dbm/asu值 的方法,不适用就不解释了。既然现在没有方法获取正确的 dbm/asu值,那就试试呗,在。中可以看到我们需要的这两个值。
2024-07-25 17:32:45 844
原创 技术成神之路:设计模式(九)观察者模式
观察者模式(Observer Pattern)是一种行为设计模式。它允许一个对象(称为主题或可观察者)来监视并通知一组依赖于这个对象的其他对象(称为观察者),以便在主题状态发生变化时自动更新观察者的对象。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有注册过的观察者对象,使它们能够自动更新自己。观察者模式通过定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,实现了对象之间的解耦和通信。
2024-07-24 22:46:17 1280
原创 技术成神之路:设计模式(八)责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象依次处理请求,避免请求的发送者和接收者之间的显式耦合。该模式通过将多个可能处理请求的对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式为请求创建一个接收者对象的链。这种模式给予多个对象处理请求的机会,从而解耦发送者和接收者。
2024-07-19 11:54:33 1317
原创 技术成神之路:设计模式(七)状态模式
状态模式(State Pattern)是一种行为设计模式,它允许一个对象在其内部状态改变时改变其行为。这个模式将状态的相关行为封装在独立的状态类中,并将不同状态之间的转换逻辑分离开来。关注点不同:状态模式关注对象在不同状态下的行为差异,封装了不同状态的行为。策略模式关注的是算法的不同实现方式,允许算法在不影响客户端的情况下独立变化。使用场景不同:状态模式适用于对象的行为在状态改变时发生改变的情况,状态之间有明显的转换关系。策略模式适用于客户端需要在多个算法中选择一种时,并且允许在运行时切换算法。
2024-07-15 10:54:33 1287
原创 技术成神之路:设计模式(六)策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。策略模式通过将算法封装为独立的策略类,提供了一种灵活的方式来选择和使用算法。它提高了代码的可维护性和扩展性,符合面向对象设计的基本原则。在需要动态选择算法和减少条件判断时,策略模式是一种非常有效的解决方案。
2024-07-14 13:46:05 806
原创 技术成神之路:设计模式(五)抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定其具体类。这种模式属于工厂模式的一种扩展,它通过引入抽象层来实现工厂方法的组合,从而使得客户端能够使用抽象的接口创建一组相关的产品对象。抽象工厂模式定义了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式是一种创建型设计模式,它允许客户端创建一系列相关或相互依赖的对象,而无需指定它们具体的类。
2024-07-11 11:19:02 996
原创 技术成神之路:设计模式(四)工厂方法模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂方法模式的主要作用是让子类决定实例化哪一个类,从而实现对象创建的延迟到具体子类中进行。工厂模式解决了简单工厂模式中集中创建逻辑和不符合开闭原则的问题,但同时自身也有一些弊端,但通过合理应用工厂方法模式,在特定的场景可以有效地提高系统的可维护性和扩展性。设计模式没有最好的,只有最适合的,大家在选用时,要权衡利弊,避免过度设计!
2024-07-10 11:18:59 952
原创 在安卓中使用FFmpeg录制摄像头的视频并保存到本地MP4文件
在移动应用开发中,有时需要利用设备的摄像头录制视频,并且希望在录制过程中能够精确控制视频的质量、格式和时长。FFmpeg作为一个强大的多媒体处理工具,提供了广泛的功能和选项,能够帮助我们实现这样的需求。
2024-07-08 18:30:53 974 1
原创 技术成神之路:设计模式(三)原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,旨在通过复制现有对象来创建新对象,而不是通过实例化类的方式。这个模式可以提高对象创建的效率,尤其是在创建对象的过程非常复杂或代价高昂时。
2024-07-03 16:28:11 1400 1
原创 技术成神之路:设计模式(二)建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象,而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。
2024-07-02 18:40:21 807
原创 技术成神之路:设计模式(一)单例模式
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。其主要思想是将类的构造函数私有化,并通过一个静态方法来控制实例的创建和访问。五种创建单例的方式,大家按需选择,核心思想都是确保一个类只有一个实例,并提供全局访问点,没有最好的,只有最适合的,理解不同实现方式的优缺点,可以帮助我们在实际开发中选择最合适的方案。
2024-07-01 11:08:12 902
原创 技术成神之路:面向对象的六大设计原则
面向对象的六大原则(SOLID原则)旨在提高代码的可维护性、可读性和可扩展性。单一职责原则(SRP):一个类只应该有一个引起它变化的原因。开闭原则(OCP):软件实体应该对扩展开放,对修改关闭。里氏替换原则(LSP):子类型必须能够替换掉它们的基类型。接口隔离原则(ISP):不应该强迫客户端依赖于它们不使用的方法。依赖倒置原则(DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。迪米特法则(LoD):一个对象应该对其他对象有尽可能少的了解,只与直接的朋友通信。
2024-06-28 18:19:27 457
原创 Android 生成 AAR 包
当我们需要在 Android 项目中引用第三方库或模块时,常常会使用 AAR(Android Archive)包。AAR 包是一种包含了编译后代码、资源文件和清单文件等的二进制文件。
2024-06-27 17:19:19 1300
原创 使用 ADB 查看 Android 设备的 CPU 使用率(详解)
希望这篇文章对你在 Android 开发过程中监控 CPU 使用率有所帮助。
2024-06-26 15:43:45 5812
原创 Android Room数据库使用介绍
Room是Google提供的Android架构组件之一,旨在简化数据库操作。它是SQLite的一个抽象层,提供了更易用和安全的API。// tableName 指定了数据库中对应的表名为 "users"。如果不指定,默认使用类名作为表名// 使用默认值 0,autoGenerate = true 表示自动生成主键// 如果不使用 @ColumnInfo 注解,默认情况下 Room 将使用属性名作为数据库中的列名。
2024-06-14 12:07:38 1645 2
原创 聊聊App在安卓设备中所使用的内存
文章用来记录及分享本人对安卓程序中内存使用的个人见解,如有错误 不吝赐教。先简单浏览下面代码,看看对它们是否熟悉👇${${在开发安卓应用时,内存管理一直是一个关键的考虑因素。良好的内存管理不仅可以提高应用的性能,还能避免内存泄漏和崩溃,由于项目所需,特来恶补相关知识。
2024-06-07 18:11:05 784
libopencv-info.so
2023-07-20
与元素类型 "item" 相关联的 "name" 属性值不能包含 '<' 字符 【annotations.zip】
2021-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人