在鸿蒙(HarmonyOS)开发中,context、uiContext、UIAbilityContext是三个与上下文相关的概念,它们在不同的场景下有不同的用途和获取方式。 这三个context都继承自BaseContext.context适用于获取应用的全局信息,而uicontext主要用于UI组件的上下文获取。 1.Context: 定义:Context表示当前Ability的上下文对象,提供
1. 前置学习文档 【HarmonyOS NEXT】ArkTs数据类型解析与使用(https://juejin.cn/spost/7448894500348608522) 2. 前言 在原生JavaScript中只有函数和类的实现,为了更好的面向对象编程,TypeScript 引入了接口、泛型、装饰器等特性。ArkTS也继承了这些特性。 3.函数 3.1 函数声明 函数声明引入一个函数,包含其
1. 背景 为什么设计ArkTS? 1 其它语言有版权【Java?Kotlin?】以及历史问题【Java内存?】 2 生态,可复用前端生态的三方库,兼容JS/TS语言生态 ArkTs解决了JS/TS中的哪些问题? 1 程序健壮性:JS是动态类型【运行期间才去做数据类型检查,且类型可以随便改变】,不利于程序的健壮性。 2 性能问题:TS虽然是静态类型,但是它的类型检查可配置可关闭,而且编译后类型信息
引言: 在数字化时代,操作系统的创新是提升用户体验和开发效率的关键。HarmonyOS NEXT作为华为推出的新一代操作系统,以其分布式架构和强大的开发工具,正在改变开发者的工作方式。本文将深入探讨在HarmonyOS NEXT开发过程中使用的关键技术、框架或工具,以及这些技术如何帮助提高开发效率、优化用户体验,并解决特定问题。 一、关键技术与工具介绍 Ark Compiler Ark Compi
在这个信息爆炸的时代,技术的每一次革新都能带来翻天覆地的变化。HarmonyOS NEXT作为华为推出的新一代操作系统,以其革命性的分布式架构和全场景智能体验,为开发者打开了一扇通往未来的大门。本文将详细叙述我成为HarmonyOS NEXT开发者的成长故事,包括我的动机、挑战、收获以及对未来的展望。 回头看,轻舟已过万重山 引
场景介绍 在弱网环境下,系统发起多网迁移(WiFi<->蜂窝,主卡<->副卡等)的过程中,给应用提供连接迁移开始和完成通知,应用根据连接迁移通知的建议进行重建,快速恢复业务,给用户带来平滑、高速、低时延的上网体验。 接口说明 接口名描述on(type: 'handoverChange', callback: Callback): void订阅连接迁移。o
场景介绍 当应用传输体验发生变化时,应用将传输体验和传输的业务类型信息通过实时反馈接口传输给系统网络业务模块,系统网络业务模块进行精细化调度,实现网络加速。 例如:视频类App播放过程中卡顿,将卡顿信息上报后,Network Boost Kit将信息反馈给系统网络加速模块,该模块会记录播放卡顿信息,并根据当前网络情况,启用网络加速能力。 接口说明 接口名描述reportQoe(appQoe: Ap
场景介绍 应用在订阅网络场景识别后,系统在网络场景实时信息或预测信息发生变化后回调给应用,回调的网络场景信息包括数据传输的链路类型、网络场景类型、数传策略建议、弱信号信息等。 接口说明 接口名描述on(type: 'netSceneChange', callback: Callback<Array>): void订阅网络场景信息状态变化。off(type: 
场景介绍 应用在订阅网络质量Qos评估后,系统按照一定的周期或Qos变化后回调给应用。回调的Qos信息包括数据传输的链路类型、上下行空口实时带宽、上下行空口实时速率、RTT时延等。 接口说明 接口名描述on(type: 'netQosChange', callback: Callback<Array>): void订阅Qos信息状态变化。off(type: 
Network Boost Kit(网络加速服务)提供网络加速能力以及网络感知、网络质量预测等能力,通过软、硬、芯、端、管、云等全方位的协同解决方案实现网络资源的调优和加速,从而构筑更可靠、更流畅、更高速的上网体验。 申请权限 场景概述 应用在使用Network Boost Kit能力前需要检查是否已经获取对应权限。如未获得授权,需要声明对应权限。 Network Boost Kit所需权限有:
简介 流量管理提供了基于物理网络的数据流量统计能力,支持基于网卡/UID 的流量统计。 流量管理主要实现功能有: 支持基于网卡/UID 的实时流量统计。 支持基于网卡/UID 的历史流量统计。 支持基于网卡/UID 的流量变化订阅。 说明 为了保证应用的运行效率,大部分 API 调用都是异步的,对于异步调用的 API 均提供了 callback 和 Promise 两种方式,以下示例均采用 pro
场景介绍 NetConnection模块提供了常用网络信息查询的能力。 接口说明 接口名描述OH_NetConn_HasDefaultNet(int32_t *hasDefaultNet)检查默认数据网络是否被激活,判断设备是否有网络连接,以便在应用程序中采取相应的措施。OH_NetConn_GetDefaultNet(NetConn_NetHandle *netHandle)获得默认激活的数据网
简介 网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。 说明 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用promise函数。 基本概念 网络生产者:数据网络的提供方,比如W
简介 MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、移除、发现、解析等能力。 本地服务:局域网内服务的提供方,比如打印机、扫描器等。 MDNS管理的典型场景有: 管理本地服务,通过对本地服务的创建,删除和解析等,管理本地服务。 发现本地服务,通过DiscoveryService对象,对指定类型的本地服务状态变化进行监听。 说明 为了保证应用的运行效率,大部分API
简介 Socket 连接主要是通过 Socket 进行数据传输,支持 TCP/UDP/Multicast/TLS 协议。 基本概念 Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 TCP:传输控制协议(Transmission Control Protocol)。是一种面向连接的、可靠的、基于字节流的传输层通信协议。 UDP:用户数据报协议(User Data
场景介绍 使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket()方法创建WebSocket对象,然后通过connect()方法连接到服务器。当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send()方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close()方法主
场景介绍 应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 接口说明** HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 接口名描述createHttp()创建一个http请求。request()根据URL地址,发起HTTP网络请求。
Distributed Service Kit(分布式管理服务)实现了分布式设备管理、分布式硬件管理、分布式键鼠穿越等能力。 应用开发者可以通过分布式设备管理进行周边设备的发现、认证、信息查询、状态监听等,该能力是分布式业务的入口功能,即只有完成认证后的设备之间才可以进行分布式业务。 运作机制 分布式设备管理能力作为系统为应用提供的一种基础服务,需要应用在所使用的业务场景,向系统主动发起请求,完成
概述 无线局域网(Wireless Local Area Networks,WLAN),是通过无线电、红外光信号或者其他技术发送和接收数据的局域网,用户可以通过WLAN实现结点之间无物理连接的网络通讯。常用于用户携带可移动终端的办公、公众环境中。 WLAN系统为用户提供接入WLAN网络功能(STA模式)、点对点的数据传输功能(P2P模式)和热点分享功能(AP模式),让应用可以通过WLAN和其他设备
简介 安全单元(SecureElement,简称SE),电子设备上可能存在一个或多个安全单元,比如有eSE(Embedded SE)和SIM卡。能够充当安全单元的SIM卡,要求具备NFC功能。 场景介绍 应用程序可以通过接口访问安全单元,比如往安全单元里面写入数据,实现在电子设备上模拟一张NFC卡片的目的。该卡片数据可能存储在eSE安全单元,或在SIM卡安全单元上。安全单元上一般会预置有访问控制规
简介 近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行,通信距离一般在10厘米距离内。HCE(Host Card Emulation),称为基于主机的卡模拟,表示不依赖安全单元芯片,电子设备上的应用程序模拟NFC卡片和NFC读卡器通信,实现NFC刷卡业务。 场景介绍 应用程序模拟NFC卡片,和NFC读卡器通信完成NFC刷卡业
简介 近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行,通信距离一般在10厘米距离内。电子设备可以通过NFC通信技术和NFC标签通信,从标签中读取数据,或写入数据到标签。 NFC标签可能会支持一种或多种通信技术,具体技术如下: NfcA (也称为 ISO 14443-3A) NfcB (也称为 ISO 14443-3B) N
简介 SPP是Serial Port Profile(串口协议)的缩写,是一种蓝牙协议,用于在蓝牙设备之间建立串行通信连接。通过SPP,蓝牙设备可以像使用串口一样进行数据传输,例如传输文件、文本等。 场景介绍 主要场景有: 服务端向客户端写入数据。 通过socket连接对端设备。 接口说明 具体接口说明如下表。 接口名功能描述sppListen()创建一个服务端监听Socket。sppAccept
简介 通用属性协议是GATT(Generic Attribute)的缩写,它是一种用于在蓝牙低功耗设备之间传输数据的协议,定义了一套通用的属性和服务框架。通过GATT协议,蓝牙设备可以向其他设备提供服务,也可以从其他设备获取服务。 场景介绍 主要场景有: 连接server端读取和写入信息。 server端操作services和通知客户端信息。 接口说明 具体接口说明如下表。 接口名功能描述conn
简介 广播与扫描,主要提供了蓝牙设备的开启广播、关闭广播、开启扫描、关闭扫描方法,通过广播和扫描发现对端蓝牙设备,实现低功耗的通信。 场景介绍 主要场景有: 开启、关闭广播 开启、关闭扫描 接口说明 具体接口说明如下表。 接口名功能描述startBLEScan()发起BLE扫描流程。stopBLEScan()停止BLE扫描流程。startAdvertising()开始发送BLE广播。disable
概述 蓝牙技术是一种无线通信技术,可以在短距离内传输数据。它是由爱立信公司于1994年提出的,使用2.4 GHz的ISM频段,可以在10米左右的距离内进行通信。可以用于连接手机、耳机、音箱、键盘、鼠标、打印机等各种设备。特点是低功耗、低成本、简单易用。目前已经发展到了第五代,支持更高的数据传输速率和更广的覆盖范围。 实现原理 蓝牙的实现原理是基于无线电技术的短距离通信协议,使用2.4GHz频段的无
XEngine Kit提供自适应VRS功能,其通过合理分配画面的计算资源,视觉无损降低渲染频次,使不同的渲染图像使用不同的渲染速率,能够有效提高渲染性能。 接口说明 以下接口为自适应VRS设置接口,如要使用更丰富的设置和查询接口。 接口名描述const GLubyte * HMS_XEG_GetString (GLenum name)XEngine GLES扩展特性查询接口。GL_APICALL
XEngine Kit提供空域AI超分能力,基于单帧图像使用AI推理生成滤波参数进行超采样,通过GPU、NPU协同工作,实现比空域GPU超分更好的画质,建议超分倍率在1.5倍以下时使用。 接口说明 以下接口为GLES空域AI超分设置接口,如要使用更丰富的设置和查询接口。 接口名描述const GLubyte * HMS_XEG_GetString (GLenum name)XEngine GLES
XEngine Kit提供空域GPU超分能力,其基于单帧输入图像,使用空间邻域信息实现超采样,开销较小同时收益可观,建议使用超分倍率为[1.2, 1.5]。 接口说明 以下接口为GLES和Vulkan空域GPU超分设置接口,如要使用更丰富的设置和查询接口。 接口名描述const GLubyte * HMS_XEG_GetString (GLenum name)XEngine GLES扩展特性查询接
XEngine Kit(GPU加速引擎服务)提供基于马良GPU的性能提升方案,包括GPU/AI超分能力、自适应VRS、Subpass Shading等,通过图形算法以及软硬件优化,让用户拥有更高性能、更低功耗的3D游戏/应用、AR/VR体验。 场景介绍 优化细节画质,降低能耗 当GPU性能不足以支持渲染高分辨率场景时,为了提高用户体验,可以使用超分能力,将较低分辨率图像通过超分重建为高分辨率图像。
概述 OpenGTX是GPU Turbo X的开放式入口,根据游戏开发者主动提供的游戏过程中的关键信息,使能LTPO(动态帧率/刷新率)等游戏加速方案,助力游戏开发者打造高画质、高流畅、低功耗极致体验。LTPO通过动态感知游戏渲染状态、游戏场景、设备状态等关键信息,动态调整游戏的帧率/刷新率以及设备的SOC/DDR频率。 业务流程 LTPO的主要业务流程如下: 用户进入游戏。 游戏应用调用[HMS
业务流程 基于相机运动感知策略的ABR主要业务流程如下: 用户进入ABR适用的游戏场景。 游戏应用调用[HMS_ABR_CreateContext]接口并指定图形API类型,创建ABR上下文实例。 游戏应用调用[HMS_ABR_SetTargetFps]接口初始化ABR实例,配置目标帧率属性,ABR结合目标帧率属性实时感知GPU负载状态。 游戏应用调用[HMS_ABR_SetScaleRange]
超帧提供两种运动估计模式供开发者选择:分别为基础模式和增强模式。其中增强模式需要对绘制顶点的Draw Call命令进行额外的标记,在相机和物体快速运动的游戏场景超帧效果较基础模式更优,能够有效改善拖影问题。本章主要介绍增强模式的运动估计原理及顶点标记方法。 说明 Draw Call:指图形驱动库(OpenGL ES)中进行绘制的命令,例如glDrawElements、glDrawArrays、gl
业务流程 基于Vulkan图形API平台,集成超帧外插模式的主要业务流程如下: 用户进入超帧适用的游戏场景。 游戏应用调用[HMS_FG_CreateContext_VK]接口创建超帧上下文实例。 游戏应用调用接口配置超帧实例属性。包括调用[HMS_FG_SetAlgorithmMode_VK](必选)设置超帧算法模式并选择外插模式;调用[HMS_FG_SetResolution_VK](必选)设
超帧外插模式是利用相邻两个真实渲染帧进行超帧计算并生成未来一帧预测帧,即利用第N-1帧、第N帧真实帧预测第N+0.5帧预测帧,如下图所示。由于外插模式不改变渲染时间线和显示时间线的帧间顺序,因此不会导致响应时延的增加。但由于外插模式预测的是未来帧画面,当发生场景画面帧间差异大、相机或物体运动方向突变时,在预测帧的画面边缘和物体边缘容易出现拖影和模糊现象。 OpenGL ES平台 业务流程 基于Op
业务流程 基于Vulkan图形API平台,集成超帧内插模式的主要业务流程如下: 用户进入超帧适用的游戏场景。 游戏应用调用[HMS_FG_CreateContext_VK]接口创建超帧上下文实例。 游戏应用调用接口配置超帧实例属性。包括调用[HMS_FG_SetAlgorithmMode_VK](必选)设置超帧算法模式并选择内插模式;调用[HMS_FG_SetResolution_VK](必选)设
超帧内插模式是利用相邻两个真实渲染帧进行超帧计算生成中间的预测帧,即利用第N-1帧和第N帧真实渲染帧预测第N-0.5帧预测帧,如下图所示。由于中间预测帧的像素点通常能在前后两帧中找到对应位置,因此内插模式的预测帧效果较外插模式更优。由于第N帧真实渲染帧需要等待第N-0.5帧预测帧生成并送显后才能最终送显,因此会新增1~2帧的响应时延。 OpenGL ES平台 业务流程 基于OpenGL ES图形A
动画是3D场景中重要的资源类型,用于控制场景中各种元素的运动。比如想要场景中的人物进行走路这个动作,每帧计算人物每一个关节的旋转角并进行设置是难以实现的。所以在完成类似的要求时,3D场景资源的制作者会将动画制作好,在模型文件中保存动画的关键帧数据以及关键帧间的插值器类型。ArkGraphics 3D提供播放并控制场景动画的能力,支持开发者灵活地控制动画的状态,达到预期的渲染效果。 动画资源的创建
3D场景中资源类型主要包含以下几种: 材质(Material): 材质是对场景中物体的光学物理性质的数学建模。在渲染计算的过程中,利用这些物理性质计算与光的相互作用,得到最终渲染的颜色。ArkGraphics 3D提供的材质类型基于PBR渲染,支持用户参照PBR渲染材质类型创建材质资源,得到预期的渲染结果。 图片(Image): 图片本质上是上一个储存信息的二维内存块(buffer),用于储存3D
ArkGraphics 3D (方舟3D图形)基于轻量级的3D引擎以及渲染管线为开发者提供基础3D场景绘制能力,供开发者便捷、高效地构建3D场景并完成渲染。 功能介绍 提供加载并解析glTF模型的能力,支持开发者将glTF模型文件置于应用文件沙盒中,通过ArkGraphics 3D提供的异步接口完成模型的加载以及渲染。 提供自定义灯光(Light)、相机(Camera)节点以及通用节点(Node)
场景介绍 NativeWindow是本地平台化窗口,表示图形队列的生产者端。开发者可以通过NativeWindow接口进行申请和提交Buffer,配置Buffer属性信息。 针对NativeWindow,常见的开发场景如下: 通过NativeWindow提供的Native API接口申请图形Buffer,并将生产图形内容写入图形Buffer,最终提交Buffer到图形队列 在适配EGL层的egl
场景介绍 NativeVsync模块用来获取系统VSync信号,提供了OH_NativeVSync实例的创建、销毁以及设置VSync回调函数的能力,VSync信号到来时会调用已设置的VSync回调函数。 接口说明 接口名描述OH_NativeVSync_Create (const char *name, unsigned int length)创建一个OH_NativeVSync实例,每次调用都会
场景介绍 NativeImage是提供Surface关联OpenGL外部纹理的模块,表示图形队列的消费者端。开发者可以通过NativeImage接口接收和使用Buffer,并将Buffer关联输出到OpenGL外部纹理。 针对NativeImage,常见的开发场景如下: 通过NativeImage提供的Native API接口创建NativeImage实例作为消费者端,获取与该实例对应的Nativ
场景介绍 NativeBuffer是提供共享内存的模块。开发者可以通过NativeBuffer接口实现共享内存的申请、使用、属性查询、释放等操作。 针对NativeBuffer,常见的开发场景如下: 通过NativeBuffer提供的Native API接口申请OH_NativeBuffer实例,获取内存的属性信息,把对应的ION内存映射到进程空间。 接口说明 接口名描述OH_NativeBuff
场景介绍 Native Drawing模块提供了一系列的接口用于基本图形和字体的绘制。 Drawing绘制的内容无法直接在屏幕上显示,需要借用XComponent以及Native Window的能力支持,将绘制的内容通过Native Window送显。 接口说明 Drawing常用接口如下表所示。 接口名描述OH_Drawing_BitmapCreate (void)创建一个位图对象。OH_Dra
场景介绍 @ohos.graphics.text模块提供了接口创建复杂的文本段落,包括多样的文本样式、段落样式、换行规则等,并最终将这些信息转换为能在屏幕上高效渲染的布局数据。 接口说明 @ohos.graphics.text常用接口如下表所示。 接口名描述pushStyle(textStyle: TextStyle): void设置成最新的文本样式。addText(text: string):
场景介绍 @ohos.graphics.drawing模块提供了基本的绘制能力,如绘制矩形、圆形、点、直线、自定义Path、字体等等。 接口说明 @ohos.graphics.drawing常用接口如下表所示。 接口名描述drawPath(path: Path) : void画一个自定义路径。drawRect(rect: common2D.Rect): void用于绘制一个矩形,默认使用黑色填充。
当应用页面布局的嵌套程度过深时,应用渲染阶段会存在一些组件的绘制指令被其他组件的绘制指令部分或完全覆盖遮挡的情况,造成冗余的cpu、gpu等计算资源的使用。这种一个屏幕上的像素点被重复绘制了多次的情况被称为过度绘制(Overdraw)。开发者可通过系统提供的过度绘制调试指令,查看引起过度绘制的组件位置及其层级,从而减轻应用渲染时的负载。 本文将分别介绍过度绘制调试功能的使用方式,以及如何进行过度绘
如果开发者想在独立线程中进行帧率控制的Native侧业务,可以通过DisplaySoloist来实现,如游戏、自绘制UI框架对接等场景。 开发者可以选择多个DisplaySoloist实例共享一个线程,也可以选择每个DisplaySoloist实例独占一个线程。 接口说明 函数名称说明OH_DisplaySoloist* OH_DisplaySoloist_Create (bool useExcl
对于基于[XComponent]进行Native开发的业务,可以请求独立的绘制帧率进行内容开发,如游戏、自绘制UI框架对接等场景。 接口说明 函数名称说明OH_NativeXComponent_SetExpectedFrameRateRange (OH_NativeXComponent *component, OH_NativeXComponent_ExpectedRateRange *range
鸿蒙课程学习
——鸿蒙课程学习
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net
登录社区云,与社区用户共同成长
邀请您加入社区