【HarmonyOS 5】鸿蒙星闪NearLink详解
【HarmonyOS 5】鸿蒙星闪NearLink详解
一、前言
鸿蒙星闪NearLink Kit 是 HarmonyOS 提供的短距离通信服务,支持星闪设备间的连接、数据交互。例如,手机可作为中心设备与外围设备(如鼠标、手写笔、智能家电、车钥匙等)通过星闪进行连接。
二、NearLink Kit 的接入与使用:
点击跳转官方文档地址
鸿蒙星闪(NearLink)的基本接入代码示例,包含设备发现、连接和数据传输的核心流程:
// NearLink设备管理服务示例import nearlink from '@ohos.nearlink';
import nearlinkSle from '@ohos.nearlink.sle';
import common from '@ohos.app.ability.common';// 星闪服务管理类
export class NearLinkManager {private context: common.UIAbilityContext | undefined;private deviceManager: nearlinkSle.SleDeviceManager | undefined;private connectedDeviceId: string | null = null;private dataChannel: nearlinkSle.SleDataChannel | undefined;constructor(context: common.UIAbilityContext) {this.context = context;}// 初始化星闪服务async initNearLinkService() {try {// 检查并请求星闪权限await this.checkAndRequestNearLinkPermission();// 创建设备管理器实例this.deviceManager = await nearlinkSle.getSleDeviceManager(this.context!);// 注册设备状态变化监听this.registerDeviceStateListener();console.info('NearLink service initialized successfully');} catch (error) {console.error(`Failed to initialize NearLink service: ${error}`);throw error;}}// 检查并请求星闪权限private async checkAndRequestNearLinkPermission() {// 权限检查逻辑// ...}// 开始扫描附近的星闪设备async startDiscovery() {if (!this.deviceManager) {throw new Error('Device manager not initialized');}try {// 配置扫描参数const discoveryConfig = {mode: nearlinkSle.SleDiscoveryMode.ACTIVE,duration: 30, // 扫描持续时间(秒)filter: {deviceTypes: [nearlinkSle.SleDeviceType.ALL]}};// 注册设备发现回调const callback = {onDeviceFound: (device: nearlinkSle.SleDevice) => {console.info(`Found device: ${device.deviceName}, type: ${device.deviceType}`);// 处理发现的设备,例如更新UIthis.onDeviceDiscovered(device);},onDiscoveryStateChanged: (state: number) => {console.info(`Discovery state changed: ${state}`);}};// 开始扫描await this.deviceManager.startDiscovery(discoveryConfig, callback);console.info('NearLink device discovery started');} catch (error) {console.error(`Failed to start discovery: ${error}`);throw error;}}// 处理发现的设备private onDeviceDiscovered(device: nearlinkSle.SleDevice) {// 这里可以添加设备过滤逻辑// ...// 通知UI更新设备列表// ...}// 连接到指定星闪设备async connectToDevice(deviceId: string) {if (!this.deviceManager) {throw new Error('Device manager not initialized');}try {// 创建连接参数const connectParams = {timeout: 10000, // 连接超时时间(毫秒)connectionType: nearlinkSle.SleConnectionType.DATA_CHANNEL};// 连接设备const connectionResult = await this.deviceManager.connect(deviceId, connectParams);if (connectionResult.resultCode === 0) {this.connectedDeviceId = deviceId;this.dataChannel = connectionResult.dataChannel;console.info(`Connected to device: ${deviceId}`);// 注册数据接收回调this.registerDataReceiveListener();} else {console.error(`Failed to connect device, error code: ${connectionResult.resultCode}`);throw new Error(`Connection failed: ${connectionResult.resultCode}`);}} catch (error) {console.error(`Failed to connect device: ${error}`);throw error;}}// 注册数据接收监听器private registerDataReceiveListener() {if (!this.dataChannel) return;this.dataChannel.on('dataReceived', (data: ArrayBuffer) => {// 处理接收到的数据const decoder = new TextDecoder();const message = decoder.decode(data);console.info(`Received data: ${message}`);// 通知UI有新数据到达// ...});}// 发送数据到已连接设备async sendData(message: string) {if (!this.dataChannel) {throw new Error('Data channel not initialized');}try {const encoder = new TextEncoder();const data = encoder.encode(message).buffer;// 发送数据await this.dataChannel.send(data);console.info(`Data sent successfully: ${message}`);} catch (error) {console.error(`Failed to send data: ${error}`);throw error;}}// 断开与设备的连接async disconnect() {if (!this.deviceManager || !this.connectedDeviceId) return;try {await this.deviceManager.disconnect(this.connectedDeviceId);this.connectedDeviceId = null;this.dataChannel = undefined;console.info('Device disconnected');} catch (error) {console.error(`Failed to disconnect device: ${error}`);throw error;}}// 注册设备状态变化监听private registerDeviceStateListener() {if (!this.deviceManager) return;this.deviceManager.on('deviceStateChanged', (params) => {console.info(`Device state changed: ${JSON.stringify(params)}`);// 处理设备状态变化// ...});}// 释放资源async release() {await this.disconnect();if (this.deviceManager) {try {await this.deviceManager.release();console.info('NearLink resources released');} catch (error) {console.error(`Failed to release resources: ${error}`);}}}
}
三、鸿蒙星闪指标对比
以下是鸿蒙星闪、蓝牙和NFC在技术性能、应用场景、成本与生态系统等方面的区别表格:
比较项目 | 鸿蒙星闪 | 蓝牙 | NFC |
---|---|---|---|
传输速率 | 最高可达2.5Gbps,低功耗模式下峰值速率可达12Mbps | 蓝牙5.2的传输速率为400Mbps,异步连接允许一个方向的数据传输速率达到721kbps,反向速率57.6kbps | 无(数据传输速率通常远低于前两者) |
延迟表现 | 传输延迟可低至20微秒,响应时延为0.25ms | 时延约为600微秒,响应时延约为10ms | 无(主要用于近距离快速交互,不强调延迟指标) |
连接设备数量 | 支持最多4096台设备同时连接 | 一般只能连接8台设备,1个蓝牙设备可以同时加入8个不同的微网 | 无(一般用于一对一的快速连接,不强调多设备连接) |
抗干扰能力 | 采用多种抗干扰技术,抗干扰能力比蓝牙提升10dB以上 | 采用跳频展频技术,抗干扰性强,不易窃听 | 无(工作距离短,干扰相对较小) |
功耗表现 | 采用先进的功耗管理策略,功耗仅相当于蓝牙的60% | 功耗较低,适用于多种低功耗设备 | 功耗较低(工作时间短) |
消费电子领域应用 | 实现高清无损音频传输和低延迟的交互体验,如华为MatePad Pro 13.2英寸平板电脑和FreeBuds Pro 3无线耳机等产品 | 广泛用于无线耳机、音箱等设备的音频传输 | 可用于设备之间的快速配对和数据传输,如手机与音箱、耳机等设备快速连接 |
智能家居领域应用 | 能实现多种智能设备的无缝连接,支持更多设备同时在线 | 用于连接智能家电,实现远程控制等功能 | 可通过NFC标签快速切换手机模式或控制智能家电开关、模式等 |
智能汽车领域应用 | 可实现车内外设备的高速、低延迟数据交换,提升自动驾驶的安全性和效率 | 用于连接车载设备,如车载蓝牙电话、蓝牙音乐播放等 | 可用于汽车钥匙功能,通过手机NFC实现车辆解锁、启动等 |
工业制造领域应用 | 能满足高精度控制和大数据传输的需求,推动工业4.0的实现 | 用于工业设备之间的无线连接,如传感器数据传输等 | 无(一般不用于工业制造场景) |
成本 | 相关解决方案、芯片模块等成本还比较高 | 技术成熟,成本较低 | 成本相对较低 |
生态系统 | 生态系统还不够完善,支持星闪技术的设备相对较少 | 拥有庞大而成熟的生态系统,几乎所有电子设备都支持蓝牙 | 在移动支付、交通出行等领域有广泛的应用,生态系统较为成熟 |
连接方式与距离 | 覆盖范围约为蓝牙的两倍,常规覆盖距离可达到20米,设备之间的连接需要在一定范围内进行配对和连接 | 一般有效传输距离为10cm - 10m,增加发射功率可达到100米,需要进行配对和连接操作 | 工作距离非常短,一般在几厘米以内,通常用于设备之间的近距离快速触碰连接 |
相关文章:

【HarmonyOS 5】鸿蒙星闪NearLink详解
【HarmonyOS 5】鸿蒙星闪NearLink详解 一、前言 鸿蒙星闪NearLink Kit 是 HarmonyOS 提供的短距离通信服务,支持星闪设备间的连接、数据交互。例如,手机可作为中心设备与外围设备(如鼠标、手写笔、智能家电、车钥匙等)通过星闪进…...
Python高级进阶:Vim与Vi使用指南
李升伟 整理 在 Python 高级进阶中,使用 Vim 或 Vi 作为代码编辑器可以显著提升开发效率,尤其是在远程服务器开发或快速脚本编辑时。以下是关于它们在 Python 开发中的高级应用详解: 1. Vim/Vi 简介 Vi:经典的 Unix 文本编辑器…...
【Python】对象生命周期全解析
Python对象生命周期全解析 在Python中,一个对象从创建到销毁会经历一系列过程,理解这些过程对于编写高效、可靠的Python代码非常重要。下面我将详细讲解Python对象的完整生命周期。 1. 对象创建阶段 (1) 内存分配 当使用类实例化时(obj MyClass())&…...
自然语言处理(NLP)在影评情感分析中的处理流程示例
自然语言处理(NLP)在影评情感分析中的处理流程示例 以影评情感分析为例,为你详细介绍自然语言处理的处理流程。在这个例子中,我们将使用 Python 和一些常用的 NLP 库,如nltk(自然语言工具包)和…...

WF24 wifi/蓝牙模块串口与手机蓝牙通信
usb-ttl ch340接线 打开串口工具SSCOM,端口号选择ch340接的那个口,波特率改成115200 DX-SMART_2.0.5.apk下载 手机打开DX-SMART软件 点击透传-搜索BLE-连接WF24-BLE 连接成功串口会收到消息 [14:37:10.591]收←◆ BLE_CONNECT_SUCCESS发送命令ATBLUFI…...
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3 场景背景 面试场景设定在一家大型互联网公司,面试官为拥有10年以上经验的技术总监,专注于高并发、高可用系统的架构设计。候选人郑薪苦是一名技术潜力十足的程序员,擅…...
C++核心编程--1 内存分区模型
C程序执行时,内存可以划分为4部分 代码区:存放函数体的二进制代码 全局区:存放全局变量、静态变量、常量 栈区:局部变量、函数参数值,编译器自动分配和释放 堆区:程序员自己分配和释放 1.1 程序运行前…...
02_线性模型(回归分类模型)
用于分类的线性模型 线性模型也广泛应用于分类问题,可以利用下面的公式进行预测: $ \widehat y w[0]*x[0]w[1]*x[1]…w[p]*x[p]b > 0$ 公式看起来与线性回归的公式非常相似,但没有返回特征的加权求和,而是为预测设置了阈值…...

通义千问席卷日本!开源界“卷王”阿里通义千问成为日本AI发展新基石
据日本经济新闻(NIKKEI)报道,通义千问已成为日本AI开发的新基础,其影响力正逐步扩大,深刻改变着日本AI产业的格局。 同时,日本经济新闻将通义千问Qwen2.5-Max列为全球AI模型综合评测第六名,不仅…...

流程编辑器Bpmn与LogicFlow学习
工作流技术如何与用户交互结合(如动态表单、任务分配)处理过 XML 与 JSON 的转换自定义过 bpmn.js 的样式(如修改节点颜色、形状、图标)扩展过上下文菜单(Palette)或属性面板(Properties Panel&…...

Figma 新手教程学习笔记
📺 视频地址:Figma新手教程2025|30分钟高效掌握Figma基础操作与UI设计流程_哔哩哔哩_bilibili 🧭 课程结构 Figma 简介(00:38) 熟悉工作环境(01:49) 操作界面介绍(03:…...
RabbitMQ的工作队列模式和路由模式有什么区别?
RabbitMQ 的工作队列模式(Work Queues)和路由模式(Routing)是两种不同的消息传递模式,主要区别在于消息的分发逻辑和使用场景。以下是它们的核心差异: 1. 工作队列模式(Work Queues)…...
什么是 ANR 如何避免它
一、什么是 ANR? ANR(Application Not Responding) 是 Android 系统在应用程序主线程(UI 线程)被阻塞超过一定时间后触发的错误机制。此时系统会弹出一个对话框提示用户“应用无响应”,用户可以选择等待或强…...

配置Spark环境
1.上传spark安装包到某一台机器(自己在finaShell上的机器)。 2.解压。 把第一步上传的安装包解压到/opt/module下(也可以自己决定解压到哪里)。对应的命令是:tar -zxvf 安装包 -C /opt/module 3.重命名。进入/opt/mo…...
嵌入式硬件篇---IIC
文章目录 前言1. IC协议基础1.1 物理层特性两根信号线SCLSDA支持多主多从 标准模式电平 1.2 通信流程起始条件(Start Condition)从机地址(Slave Address)应答(ACK/NACK)数据传输:停止条件&#…...

Window下Jmeter多机压测方法
1.概述 Jmeter多机压测的原理,是通过单个jmeter客户端,控制多个远程的jmeter服务器,使他们同步的对服务器进行压力测试。 以此方式收集测试数据的好处在于: 保存测试采样数据到本地机器通过单台机器管理多个jmeter执行引擎测试…...

视频图像压缩领域中 DCT 的 DC 系数和 AC 系数详解
引言 在数字图像与视频压缩领域,离散余弦变换(Discrete Cosine Transform, DCT)凭借其卓越的能量集中特性,成为JPEG、MPEG等国际标准的核心技术。DCT通过将空域信号映射到频域,分离出DC系数(直流分量&…...
K8S cgroups详解
以下是 Kubernetes 中 cgroups(Control Groups) 的详细解析,涵盖其核心原理、在 Kubernetes 中的具体应用及实践操作: 一、cgroups 基础概念 1. 是什么? cgroups 是 Linux 内核提供的 资源隔离与控制机制,…...

能源设备数据采集
在全球可持续发展目标与环境保护理念日益深入人心的时代背景下,有效管理和优化能源使用已成为企业实现绿色转型、提升竞争力的关键路径。能源设备数据采集系统,作为能源管理的核心技术支撑,通过对各类能源生产设备运行数据的全面收集、深度分…...

Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)
1.protobuf简介 protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占用空…...

[Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化
文章目录 [Linux性能优化] 线程卡顿优化。0、省流版本一、问题定位:CPU 资源分析二、线程卡顿现场复现线程优化前图片 三、线程卡顿优化方向1.如果是轮询方式2.如果是事件驱动方式 四、修改方式线程优化后图片 [Linux性能优化] 线程卡顿优化。 0、省流版本 如果采…...

Ubuntu20.04下如何源码编译Carla,使用UE4源码开跑,踩坑集合
一、简介 作为一个从事算法研究的人员,无人驾驶仿真一直是比较重要的一部分,但是现在比较常见的算法验证都是在carla这个开源仿真平台上做的,所以我有二次开发carla的需求,今天就来讲讲编译CARLA。 网上的教材很多,但还是推荐大家看官网教程:Linux build - CARLA Simul…...
Java中的策略模式和模板方法模式
文章目录 1. 策略模式(Strategy Pattern)案例:支付方式选择 2. 模板方法模式(Template Method Pattern)案例:制作饮料流程 3. 策略模式 vs 模板方法模式4.总结 在Java中,策略模式和模板方法模式…...

26考研——中央处理器_数据通路的功能和基本结构(5)
408答疑 文章目录 三、数据通路的功能和基本结构数据通路的功能数据通路的组成组合逻辑元件(操作元件)时序逻辑元件(状态元件) 数据通路的基本结构CPU 内部单总线方式CPU 内部多总线方式专用数据通路方式 数据通路的操作举例通用寄…...

区块链大纲笔记
中心化出现的原因是由于网络的形成(不然就孤立了,这显然不符合现实,如,社会,计算机网路),接着由于网络中结点能力一般不对等同时为了便于管理等一系列问题,导致中心化网络的出现。&a…...
IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践
目录 AI编程助手的演进与核心价值GitHub Copilot深度集成指南国产新星DeepSeek配置实战GPT-4o Mini低成本接入方案三大助手对比与场景适配企业级安全与本地化部署未来发展趋势与开发者启示1. AI编程助手的演进与核心价值 1.1 技术演进图谱 #mermaid-svg-LwYPrW2Y2Pqvqgf0 {fon…...

浏览器自动化:RPA 解决方案的崛起
1. 引言 在 2025 年,浏览器自动化已成为企业和开发者不可或缺的工具。从网页数据抓取到自动化测试,这项技术不仅提高了效率,还推动了 Web 生态的发展。然而,随着浏览器指纹识别和反机器人检测的进步,传统的本地自动化…...
主流编程语言中ORM工具全解析
在不同编程语言中,ORM(Object-Relational Mapping,对象关系映射)工具的设计目标都是简化数据库操作。 以下是主流语言中最常用的 ORM 工具,按语言分类介绍其特点、适用场景和典型案例。 一、Python 生态 Python 社区…...
《数字分身进化论:React Native与Flutter如何打造沉浸式虚拟形象编辑》
React Native,依托JavaScript语言,借助其成熟的React生态系统,开发者能够快速上手,将前端开发的经验巧妙运用到移动应用开发中。它通过JavaScript桥接机制调用原生组件,实现与iOS和Android系统的深度交互,这…...
React学习———React.memo、useMemo和useCallback
React.memo React.memo是React提供的一个高阶组件,用于优化函数组件的性能,它通过记忆组件的渲染结果,避免在父组件重新渲染时,子组件不必要的重新渲染 React.memo会对组件的props进行浅比较,如果props没有变化&#…...