自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 鸿蒙OpenHarmony南向开发 【SUBJECT技术】ServiceAbility应用(系统架构)

摘要:本文详细介绍了OpenHarmony系统中ServiceAbility的IPC(进程间通信)机制及其应用。首先强调了ServiceAbility在OpenHarmony系统中的重要性,通过具体数据展示了其在多个子系统中的广泛应用。文章阐述了IPC的基本概念,对比了IPC与RPC的差异,并描述了基于Binder驱动的Client-Server模型通信架构。重点讲解了ServiceAbility的实现步骤,包括接口定义、服务端Stub实现、客户端Proxy实现、SA注册与获取等核心流程。最后补充了同步/异

2025-06-04 16:57:15 875

原创 鸿蒙OpenHarmony南向开发 【SUBJECT技术】epoll设计思路及在MSDP子系统中的应用举例

epoll 接口是为解决 Linux 内核处理大量文件描述符而提出的方案。该接口属于 Linux 下多路 I/O 复用接口中 select/poll 的增强。其经常应用于 Linux 下高并发服务型程序,特别是在大量并发连接中只有少部分连接处于活跃下的情况 (通常是这种情况),在该情况下能显著的提高程序的 CPU 利用率。a. epoll 在 Linux 内核中构建了一个文件系统,该文件系统采用红黑树来构建,红黑树在增加和删除上面的效率极高,因此是 epoll 高效的原因之一。

2025-06-04 15:52:41 650

原创 鸿蒙OpenHarmony南向开发 【SUBJECT技术】定时器实现原理及应用举例

就是将 class TimerQueue 集成到 EventLoop 中,也就是作为 class EventLoop 的成员变量,这个很简单,不再赘述。

2025-06-04 14:29:18 793

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理|系统功能的存储机制详解(一)

本文介绍了分布式调度系统中sa_store.c文件的代码结构,主要包括宏定义、数据结构和函数实现。宏定义部分规定了名称的最大长度、增长步长和最大节点数。数据结构部分定义了ServiceInfo、FeatureNode、SAStore、ListNode和PidHandle,用于存储服务信息、功能节点、系统功能存储结构、链表节点和进程关系。函数实现部分详细描述了如何根据名称查询服务和功能节点。FindServiceByName函数用于在链表中查找指定名称的服务节点,FindFeatureByName函数用于在功

2025-05-19 17:06:55 227

原创 鸿蒙OpenHarmony南向开发 轻量系统服务管理samgr-samgr_lite赏析

在samgr_lite.h文件中,定义了用于向Samgr注册服务、特性和功能的宏和结构体。宏定义包括BOOTSTRAP_SERVICE用于启动引导服务,MAX_SYSCAP_NUM定义功能最大数目,MAX_SYSCAP_NAME_LEN定义功能名的最大长度。结构体SamgrLite提供了注册和注销服务、特性、API的方法,以及添加、检查和获取系统功能的方法。这些功能对于系统服务开发人员实现和管理系统能力至关重要。此外,文中还提供了鸿蒙开发学习资源的链接,帮助开发者深入掌握鸿蒙开发技术。

2025-05-13 14:18:42 307

原创 鸿蒙OpenHarmony 标准系统内核(Linux)

标准系统类设备是面向应用处理器的设备,支持的设备最小内存为128MiB。OpenHarmony选择Linux内核作为基础内核,可以对不同资源受限的设备产品配置出适合的OS内核,为上层提供基础的操作系统能力。

2025-04-24 22:17:30 467

原创 鸿蒙OpenHarmony 标准系统内核(Linux)

标准系统类设备是面向应用处理器的设备,支持的设备最小内存为128MiB。OpenHarmony选择Linux内核作为基础内核,可以对不同资源受限的设备产品配置出适合的OS内核,为上层提供基础的操作系统能力。

2025-04-24 21:36:02 700

原创 鸿蒙OpenHarmony 轻量系统内核(LiteOS-M)【异常调测】

利用FP寄存器可以得到父函数的栈帧,从栈帧中获取父函数的FP,就可以得到祖父函数的栈帧,以此类推,可以追溯程序调用栈,得到函数间的调用关系。异常接管是操作系统对运行期间发生的异常情况进行处理的一系列动作,例如打印异常发生时异常类型、发生异常时的系统状态、当前函数的调用栈信息、CPU现场信息、任务调用堆栈等信息。当系统发生异常时,系统打印异常函数的栈帧中保存的寄存器内容,以及父函数、祖父函数的栈帧中的LR链接寄存器、FP帧指针寄存器内容,用户就可以据此追溯函数间的调用关系,定位异常原因。

2025-04-17 15:17:30 711

原创 OpenHarmony 小型系统内核(LiteOS-A)【Shell 工具】上

在build/mk/liteos_tables_ldflags.mk中添加相应选项: 如:上述“ls”命令注册时,需在build/mk/liteos_tables_ldflags.mk中添加“-uls_shellcmd”。用户可以选择静态注册命令方式和系统运行时动态注册命令方式,静态注册命令方式一般用在系统常用命令注册,动态注册命令方式一般用在用户命令注册。Shell在执行用户命令时,如果存在多个命令关键字相同的命令,只会执行其中在"help"命令中排序在最前面的一个。

2025-04-03 14:27:00 922

原创 OpenHarmony——轻量系统内核(LiteOS-M)

OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点。其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等。支持驱动框架HDF(Hardware Driver Foundation),统一驱动标准,为设备厂商提供了更统一的接入方式,使驱动更加容易移植,力求做到一次开发,多系统部署。

2025-04-02 19:55:44 621 1

原创 鸿蒙OH南向开发——标准系统方案之扬帆移植案例

本文以 OpenHarmony 3.0 为基础,讲解基于 HDF(Hardware Driver Foundation)驱动框架开发的 Audio 驱动框架,包括 Audio 驱动的架构组成、功能部件的实现和服务节点详细介绍。音频驱动框架模型,向上服务于多媒体音频子系统,便于系统开发者能够更便捷的根据场景来开发应用。向下服务于具体的设备厂商,对于 Codec 和 DSP 设备厂商来说,可根据 ADM 模块提供的向下统一接口适配各自的驱动代码,就可以实现快速开发和适配 HOS 系统。

2025-04-02 15:14:09 842

原创 鸿蒙OH南向开发 标准系统芯片移植(标准系统方案之瑞芯微RK3566移植案例二)

调试AP模块时,无法正常开启AP功能的解决方法需要使用到busybox和hostapd配置ap功能,操作步骤如下:调试STA模块时,启动STA模式的方法NOTE:需要对busybox与dhcpc.sh设置成可执行权限。

2025-04-01 16:19:33 594

原创 OpenHarmony 标准系统芯片移植(标准系统方案之瑞芯微RK3566移植案例一)

OpenHarmony Camera驱动模型结构HDI Implementation:对上实现HDI接口,向下调用框架层的接口,完成HDI接口任务的转发。Buffer Manager:屏蔽不同内存管理的差异,为子系统提供统一的操作接口,同时提供buffer轮转的功能。Pipeline Core:解析HCS配置完成pipeline的搭建,调度pipeline中的各个node完成流的处理Device Manager:通过调用底层硬件适配层接口,实现查询控制底层设备、枚举监听底层设备的功能。

2025-04-01 13:46:30 809

原创 Open Harmony 小型系统STM32MP1芯片移植案例

moduleName 要与驱动文件中定义的相同,deviceMatchAttr 要与驱动私有配置信息文件 gpio_config.hcs 中定义 match_attr 的相同。系统启动时会根据//vendor/bearpi/bearpi_hm_micro/init_configs 中的启动配置来启动系统。选择好产品后,输入回车就会在根目录下自动生成 ohos_config.json 文件,这里会将要编译的产品信息列出。在进行移植之前,需要进行预编译适配。进行安全子系统适配需要添加。本文章基于[意法半导体]

2025-03-31 15:55:13 796

原创 OpenHarmony ——小型系统芯片移植指南(一)

编译构建流程、编译脚本编写、目录规则、独立编译单个组件、独立编译芯片解决方案等介绍请见 编译构建子系统介绍。

2025-03-27 15:25:20 902

原创 鸿蒙应用开发:基于ArkTS构建一个高效的数据流处理框架

/ 模拟从文件系统中读取日志数据});代码讲解类继承自DataSource,用于从文件系统中读取日志数据。log : "");代码讲解LogCleaner类用于去除日志中的时间戳。LogFilter类用于过滤出指定级别的日志。类用于将多条日志聚合成一条字符串。super();代码讲解类继承自Pipeline,用于将日志数据依次通过清洗、过滤、聚合等处理节点。super();// 模拟将数据存储到数据库中代码讲解类继承自DataStore。

2025-03-26 16:22:11 633

原创 鸿蒙应用开发 基础组件(chart开发)

chart为图表组件,用于呈现线形图、柱状图和量规图界面。

2025-03-25 16:19:01 216

原创 Openharmony 移植子系统(三)

多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战)以及面试真题。除可获得测试认证之外,还可以在开发阶段提前发现缺陷,大幅提高代码质量。OpenHarmony兼容性测试是XTS(OpenHarmony生态认证测试套件)之一,详见 OpenHarmony兼容性测试。定位问题时,可在“test/xts/acts/build_lite/BUILD.gn”中,将不需要的测试项注释,以便调试。

2025-03-21 22:16:38 414

原创 OpenHarmony 南向开发-移植子系统二

此库中提供了“mbedtls_platform_entropy_poll”、“mbedtls_hardclock_poll”、“mbedtls_havege_poll”、“mbedtls_hardware_poll”等几种产生随机数的方式。在“vendor/MyVendorCompany/MyProduct/config.json”文件中,通常将配置“ohos_board_adapter_dir”配置为 “//vendor/MyVendorCompany/MyProduct/adapter”。

2025-03-21 18:10:01 931

原创 OpenHarmony南向开发 移植子系统(一)

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开,支持根据实际需求裁剪某些非必要的部件,本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力,需要对相应子系统进行适配。OpenHarmony芯片适配常见子系统列表如下(详见表1),需结合具体芯片再做增删减操作。

2025-03-21 15:51:44 743

原创 鸿蒙应用开发 相对布局RelativeContainer

代码案例基于Api13。最新的DevEco Studio,在创建一个新项目的时候,官方已经默认把RelativeContainer组件做为根布局使用了,由此可见,RelativeContainer组件的重要性;相对于其它的容器组件,它的出现,解决了一个实际开发中的重要问题,那就是复杂场景中的元素对齐。如下的组件之间的布局,如果没有RelativeContainer组件的情况下,我们该如何实现呢?

2025-03-18 15:08:01 973

原创 鸿蒙应用开发关于图片、视频的选择详解

与Android系统相比,HarmonyOS提供了更严谨的权限控制,这里不得不提HarmonyOS的应用权限管控策略。数据包括个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)。功能包括设备功能(如访问摄像头/麦克风、打电话、联网等)、应用功能(如弹出悬浮窗、创建快捷方式等)。system_grant(系统授权)指的是系统授权类型,在该类型的权限许可下,应用被允许访问的数据不会涉及到用户或设备的敏感信息,应用被允许执行的操作对系统或者其他应用产生的影响可控。

2025-03-11 14:16:49 682

原创 详细介绍下鸿蒙 EventHub模块

EventHub 模块在 HarmonyOS 应用开发中扮演着重要角色,它提供了事件中心的功能,包括事件订阅、取消订阅以及触发事件等操作,为应用内的模块间通信提供了有效的机制。通过对 EventHub 模块的这些方法的了解和运用,开发者可以在 HarmonyOS 应用中有效地实现事件驱动的编程逻辑,增强应用的交互性和灵活性。触发时调用方是 EventHub 对象,而 EventHub 对象没有。使用箭头函数,调用方变为 EntryAbility 对象,该对象存在。属性,所以结果是 12。

2025-03-10 20:03:56 655

原创 HarmonyOS 将图片保存到相册

在其它手机端,若想保存图片到相册,需要申请对应的权限,而鸿蒙中对应的权限为受限开放权限,普通应用一般不让申请,这个时候我们可以使用安全保存控件来临时申请权限,用于保存图片到相册。

2025-03-10 17:28:07 433

原创 鸿蒙原生智能语音识别实战案例

短语音模式(不超过60s)长语音模式(不超过8h)// 创建引擎,通过callback形式返回// 设置创建引擎参数online: 1,// 调用createEngine方法if (!err) {// 接收创建引擎的实例} else {// 无法创建引擎时返回错误码1002200008,原因:引擎正在销毁中});language:语言online:模式,1为离线,目前只支持离线引擎extraParams:区域信息等。

2025-03-10 16:17:52 745

原创 HarmonyOS 中常见弹窗功能解析

弹窗,可以说在实际的开发中是非常的常见,应用升级提示,用户信息提示等等,很多场景都会用到这样的弹窗,鸿蒙当中的弹窗,可以说类型丰富,其功能也是非常之多,按照种类而言,分为模态弹窗和非模态弹窗两种类型,其主要的区别就是在于用户是否必须做出响应;我们需要知道的是,前者是强交互形式,会中断用户当前的操作流程,后者是弱交互形式,不会影响用户当前操作行为。

2025-03-10 15:22:07 333

原创 鸿蒙 Next 计时器组件TextTimer的能力做个详解

在日常UI开发中,经常会用到计时控件,比如播放视频是的时间进度显示以及音视频通话时显示的通话时长,都需要用到正计时的计时控件。还有些场景会用到倒计时的计时控件,设置一个最大时间,开始倒计时。在Android中我们一般使用TextView,配合Handler来更新TextView实现计时效果。HarmonyOS Next提供了TextTimer组件来实现计时效果。下面先介绍TextTimer能力。TextTimer 是一个通过文本显示计时信息并控制其计时器状态的组件。

2025-03-10 14:08:04 917

原创 鸿蒙开发 Banner组件封装与使用解析

轮播图在每个项目中都很常见,鸿蒙中在容器组件中也提供了Swiper组件,用于子组件滑动轮播显示,和前端的使用起来也是异曲同工,我们先看下基本的用法。Swiper() {以上的代码便轻松的实现了一个轮播图效果,当然了,只是一个简单的案例,很多属性并没有设置,按照正常的使用而言,确实没必要再搞什么封装,但是,有一个潜在的问题是需要封装的,比如使用懒加载数据的时候,不封装的话,每实现一个轮播图就需要重复大量的代码,这显然是冗余的;

2025-03-09 21:46:09 862

原创 鸿蒙开发:animator实现帧动画使用

帧动画,也称为帧序列动画,是通过将一系列图像(帧)按顺序快速播放来创建动画效果的技术。每一帧都是动画中的一个静态图像,连续播放这些帧就形成了动态效果。通过返回应用onFrame逐帧回调的方式,让开发者在应用侧的每一帧都可以设置属性值,从而实现设置了该属性值对应组件的动画效果。相比于属性动画,开发者可感知动画的过程,实时修改UI侧的值,具有事件可实时响应、可暂停的优点,但性能上不如属性动画。Button().width(60)响应用户输入:根据用户的触摸或手势改变动画的播放速度或方向。

2025-03-09 21:03:25 377

原创 介绍一下鸿蒙@BuilderParam装饰器作用,使用方法

本文代码案例基于Api13。在实际的开发中,我们经常会遇到自定义组件的情况,比如通用的列表组件,选项卡组件等等,由于使用方的样式不一,子组件是动态变化的,针对这一情况,就不得不让使用方把子组件视图传递过来,如何来接收这个UI视图,这就是@BuilderParam装饰器的作用。@Builderbuild() {@BuilderParam用于接收@Builder定义的函数,私有和全局都可以。定义全局的@Builder。@BuilderText("测试数据一")调用@Entry@Component。

2025-03-09 19:23:21 773

原创 React 的单向数据流

React 的单向数据流通过让数据从父组件向子组件传递,确保了应用的数据流动是可预测且易于管理的。它的优点包括可预测性、可维护性和调试性,缺点则包括在复杂应用中可能带来的状态提升和问题。开发者需要根据应用的复杂程度和数据共享的需求,合理管理状态的位置,以平衡单向数据流带来的优势与复杂性。

2025-03-07 21:26:21 565

原创 HarmonyOS 自定义TabBar页签案例

TabBar在大部分的APP当中都能够使用到,不同的APP可能存在不一样的TabBar样式,Tab组件自带的TabBar属性对于部分效果无法满足,如页签中间显示一圈圆弧外轮廓等, 因此我们需要去自己定义一个TabBar页签来满足开发的需要。

2025-03-07 18:15:03 905

原创 HarmonyOS Next开发中自定义组件属性访问限定符

对于@State/@Prop/@Provide/@BuilderParam/常规成员变量(不涉及更新的普通变量),使用private修饰时,在自定义组件构造时不允许进行赋值传参,否则会有编译告警日志提示。

2025-03-07 16:52:22 622

原创 HarmonyOS 界面图像文字镂空效果实现

对于圆形镂空,我们同样先绘制一个覆盖整个Canvas的矩形,然后在一个新路径中绘制圆形并设置 globalCompositeOperation 为 'destination-out',这样就会在矩形中挖出一个圆形的镂空。在鸿蒙系统中,为了给用户带来更加生动的视觉体验,我们可以使用不同的技术手段来实现图像和文字的镂空效果。本文将通过三个具体的示例来展示如何在鸿蒙系统中实现实心矩形镂空、实心圆镂空以及文字镂空的效果。最后,在文字镂空的例子中,我们先绘制了一个背景图像,然后在图像上绘制了“鸿蒙”这两个字。

2025-03-07 15:46:13 163

原创 鸿蒙 Next页面开发自定义组件--构建应用界面的能手

在大型应用开发中,代码的复用性和可维护性是至关重要的。想象一下,如果每次在不同页面需要展示一个特定样式的按钮,都要重新编写一遍代码,不仅工作量巨大,而且后期维护和修改也会变得异常困难。这时候自定义组件就派上用场了。在ArkTS中,自定义组件可以将常用的UI元素或功能逻辑封装起来,形成一个个独立的、可复用的模块。这样,当我们在多个页面需要相同的功能或样式时,只需要引用这个自定义组件,而无需重复编写代码。这不仅大大提高了开发效率,还能确保整个应用的风格一致性。

2025-03-07 14:07:29 738

原创 鸿蒙HarmonyOS Next容器组件 构建灵活页面布局的“得力助手”

在HarmonyOS Next的开发领域,容器组件堪称构建灵活页面布局的“得力助手”。它们如同不同规格的建筑模块,各自具备独特的功能,帮助开发者将页面元素巧妙组合,呈现出丰富多样且适配各类设备的界面效果。接下来,让我们一同深入了解Row、Column、Flex这些容器组件的奥秘。

2025-03-06 21:47:53 432

原创 鸿蒙ArkTS页面与H5页面交互方法

在开发App时,我们经常会遇到使用webView加载H5页面的场景,这样做的好处就不多加赘述了,那么鸿蒙App如何加载H5页面呢?又怎么与H5页面进行通信呢?,废话少说,直接上代码。App可以通过runJavaScript()方法调用html页面的JavaScript相关函数。在下面的示例中,点击App的“runJavaScript”按钮时,来触发html页面的change()方法更新霓虹灯按钮状态。html通过鸿蒙的test方法,获取鸿蒙传递过来的数据。

2025-03-06 20:01:24 513

原创 简单了解下调用鸿蒙 Next 一些关键系统能力的方法

HarmonyOS Next 作为华为鸿蒙操作系统的下一代重要演进,为开发者带来了更强大、更高效且更具创新性的系统能力。在这篇文章中,我们将深入探讨如何简易地调用 HarmonyOS Next 的一些关键系统能力,并通过代码示例帮助您快速上手。

2025-03-06 17:13:20 356

原创 鸿蒙Next开发-九宫格随机抽奖案例

通过startLottery方法开始抽奖并逐渐加速,然后进入runAtConstantSpeed方法以恒定速度运行抽奖,最后通过slowDown方法减速并展示抽奖结果。在抽奖页面结构中,我们使用了鸿蒙的组件化开发方式,定义了一个LotteryPage组件。该组件包含了抽奖所需的状态变量、抽奖顺序数组、奖品数组以及抽奖逻辑的实现方法。在构建UI界面时,我们使用了鸿蒙的布局组件和样式设置,将奖品以九宫格形式展示在页面上。每个奖品格子都可以点击,点击抽奖按钮后会触发抽奖动画,展示抽奖结果对话框。

2025-03-06 14:56:41 259

原创 解析鸿蒙Next--AtomicServiceWeb 使用方法

AtomicServiceWeb 是对 Web 组件的升级,用于在特定场景下实现更高效和功能丰富的网页交互。它在一些接口和属性的使用上与 Web 组件有所不同,需要开发者按照新的规范进行操作。

2025-03-06 13:57:55 451

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除