鸿蒙NEXT开发中使用星闪服务
1.35个Redis企业级性能优化点与解决方案2.对比传统数据库,TiDB 强在哪?谈谈 TiDB 的适应场景和产品能力3.深度长文解析SpringWebFlux响应式框架15个核心组件源码4.Nginx性能调优5招35式不可不知的策略实战5.Java Executors类的9种创建线程池的方法及应用场景分析6.Redis数据结构—跳跃表 skiplist 实现源码分析7.Volatile不保证原子性及解决方案8.吃透 JVM 诊断方法与工具使用9.Java RMI技术详解与案例分析10.通过JUnit源码分析学习编程的奇技淫巧11.什么是依赖倒置原则12.初探 Rust 语言与环境搭建13.为什么用Vite框架?来看它的核心组件案例详解14.Vue状态管理库Pinia详解15.Tomcat的配置文件中有哪些关键的配置项,它们分别有什么作用?16.ECharts实现雷达图详解17.OpenFeign深入学习笔记18.阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略19.除了递归算法,要如何优化实现文件搜索功能20.关于建表字段是否该使用not null这个问题你怎么看?21.三大硬核方式揭秘:Java如何与底层硬件和工业设备轻松通信!22.在 ArkTS 中,如何有效地进行内存管理和避免内存泄漏?23.10款好用的开源 HarmonyOS 工具库24.尝鲜 HarmonyOS NEXT 开发环境搭建25.HarmonyOS NEXT 底部选项卡功能26.HarmonyOS NEXT 开发之ArkTS基础入门27.ArkTS 和仓颉的特性对比与案例28.Spark任务OOM问题如何解决?29.鸿蒙NEXT开发声明式UI是咋回事?30.HarmonyOS NEXT开发之ArkTS自定义组件学习笔记31.如何在鸿蒙 NEXT 中使用 @Builder 装饰器优化 UI 组件的复用?32.鸿蒙 NEXT 如何使用 @Styles 装饰器来优化我的组件代码?33.Java 如何确保 JS 不被缓存34.10月22日纯血鸿蒙正式版发布意味着什么?35.鸿蒙NEXT应用上架与分发步骤详解36.Java EasyExcel 导出报内存溢出如何解决37.Java Z 垃圾收集器如何彻底改变内存管理38.聊聊公众号联动扫码登录功能如何实现39.IDEA中通义灵码的使用技巧40.细谈 Linux 中的多路复用epoll41.适合才最美:Shiro安全框架使用心得42.MongoDB面试专题33道解析43.SQL Server 数据太多如何优化44.【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?45.Java灵魂拷问13个为什么,你都会哪些?46.异步编程在ArkTS中具体怎么实现?47.如何理解ArkTS不支持structural typing48.ArkTS四种渲染控制能力49.在ArkTS中,如何优化布局以提高性能?50.ArkUI与MVVM模式的诗和远方51.鸿蒙NEXT开发中如何确保使用 PersistentStorage 存储的数据安全?52.优雅的@ObservedV2和@Trace装饰器53.10个案例告诉你mysql不使用子查询的原因54.鸿蒙 NEXT 开发中,使用公共事件进行进程间通信
55.鸿蒙NEXT开发中使用星闪服务
56.鸿蒙NEXT使用request模块实现本地文件上传57.玩转 DevEco Studio 5 代码重构功能58.JAVA线程池有哪些队列? 以及它们的适用场景案例59.2025 年,程序员如何找准技术“掘金点”?60.鸿蒙 NEXT 开发中,普通对象跨线程如何传递61.什么是内存泄漏?C++中如何检测和解决?62.使用贪心算法解决最小生成树问题63.如何使用 Python 进行文件读写操作?64.如何在Python中高效地读写大型文件?65.2025春招,Spring 面试题汇总66.2025春招 SpringCloud 面试题汇总大家好,我是 V 哥,学习鸿蒙开发的星闪服务,整理了这个学习笔记分享给大家。NearLink Kit(星闪服务)是鸿蒙操作系统提供的一种低功耗、高速率的短距离通信服务,它允许设备之间进行连接和数据交互。以下是一些具体的使用案例和步骤,以帮助理解如何在实际业务中使用星闪服务。
以下这些场景使用星闪
-
智能座舱
- 车内降噪:使用星闪服务在车辆内部进行音频信号的传输,以实现主动降噪功能。
- 互动投屏:通过星闪服务将手机或其他移动设备上的屏幕内容无线传输到车载显示屏幕上。
- 车载娱乐:利用星闪服务连接车载信息系统和乘客的个人设备,提供个性化娱乐体验。
- 智能车钥匙:通过星闪服务实现车辆的无钥匙进入和启动功能,提升车辆的智能化水平。
-
智能家居
- 设备控制:使用星闪服务连接家中的各种智能设备,如智能灯泡、智能插座等,实现远程控制和自动化操作。
-
智能终端
- 鼠标和手写笔:中心设备(如电脑或平板)通过星闪服务与外围设备(鼠标、手写笔)配对连接,使用鼠标和手写笔作为输入控制中心设备。
-
智能制造
- 生产线自动化:在生产线上使用星闪服务连接各种传感器和控制器,实现生产过程的实时监控和优化。
开发步骤
以下是使用NearLink Kit实现星闪广播的基本步骤:
-
准备软硬件环境
- 确保开发环境为DevEco Studio 5.0.1 Beta3及以上版本,SDK为API 13 beta及以上。
- 确认终端设备支持星闪功能,如Mate 60 Pro、Pura70系列等。
-
申请权限
- 动态申请星闪权限
ohos.permission.ACCESS_NEARLINK
。
- 动态申请星闪权限
-
广播接口说明
- 使用
startAdvertising
接口启动星闪广播。 - 使用
stopAdvertising
接口停止星闪广播。 - 通过
on
和off
接口订阅和取消订阅星闪广播状态变化事件。
- 使用
-
广播实现
- 创建一个类(如
NearLinkAdvUtils
),封装星闪广播的相关功能。 - 订阅星闪广播状态变化事件,以便在状态变化时接收通知。
- 设置广播参数和数据,包括广播UUID、广播内容等。
- 开启星闪广播,并获取返回的
advertisingId
。 - 停止星闪广播时使用对应的
advertisingId
。
- 创建一个类(如
来看一个案例代码
我们以实现车内降噪功能为例,使用星闪服务(NearLink Kit)进行音频信号的传输,涉及到音频信号的采集、处理和播放。通过一个简化的代码示例,来用一下星闪服务在车辆内部进行音频信号的传输,实际应用中需要根据具体的硬件和软件环境进行调整哈。
步骤1:导入必要的模块
import featureAbility from '@ohos.ability.featureAbility';
import want from '@ohos.want';
import { CommonEvent, CommonEventPublishInfo, CommonEventSubscribeInfo, CommonEventListener, CommonEventSubscribeInfoMatcher, CommonEventPublishInfoMatcher } from '@ohos.commonevent';
import { AudioRecord, AudioPlayer } from '@ohos.media.audio';
步骤2:定义星闪服务的广播和接收
// 星闪广播
function startNearLinkBroadcast() {
const publishInfo = new CommonEventPublishInfo();
publishInfo.event = 'com.vin.harmony.nearlink.audio';
publishInfo.data = 'start_audio_capture';
CommonEvent.publish(publishInfo, (err, data) => {
if (err) {
console.error('Failed to publish nearlink event:', err);
} else {
console.log('Nearlink event published successfully');
}
});
}
// 星闪接收
function onNearLinkEvent(event) {
if (event.matchType === CommonEventSubscribeInfoMatcher.ABILITY && event.eventId === 'com.example.harmony.nearlink.audio') {
const audioData = event.data;
if (audioData === 'start_audio_capture') {
startAudioCapture();
}
}
}
// 订阅星闪事件
function subscribeNearLinkEvent() {
const subscribeInfo = new CommonEventSubscribeInfo();
subscribeInfo.events = ['com.vin.harmony.nearlink.audio'];
subscribeInfo.matchType = CommonEventSubscribeInfoMatcher.ABILITY;
CommonEvent.subscribe(subscribeInfo, (err, data) => {
if (err) {
console.error('Failed to subscribe nearlink event:', err);
} else {
console.log('Subscribed to nearlink event successfully');
}
});
}
步骤3:音频信号的采集和播放
// 开始音频采集
function startAudioCapture() {
const audioRecord = new AudioRecord({
sampleRate: 44100,
channels: 2,
encoding: AudioRecord.AudioEncoding.PCM_16_BIT,
callback: (buffer) => {
// 处理音频数据,例如进行降噪处理
processAudioData(buffer);
}
});
audioRecord.start();
}
// 处理音频数据
function processAudioData(buffer) {
// 这里可以添加降噪算法,例如使用FFT进行频域分析和滤波
// 假设降噪后的数据存储在bufferProcessed中
const bufferProcessed =降噪算法(buffer);
// 播放处理后的音频
playProcessedAudio(bufferProcessed);
}
// 播放处理后的音频
function playProcessedAudio(buffer) {
const audioPlayer = new AudioPlayer();
audioPlayer.play(buffer, (err) => {
if (err) {
console.error('Failed to play audio:', err);
}
});
}
步骤4:初始化和启动
// 在Ability的onStart中初始化和启动
export default featureAbility({
data: {
},
onStart: function () {
subscribeNearLinkEvent();
},
onStop: function () {
// 取消订阅星闪事件
CommonEvent.unsubscribe(subscribeInfo);
},
// 其他Ability生命周期方法...
});
请注意,案例中的降噪算法
是一个占位符,你需要根据实际的降噪算法来实现它。此外,音频采集和播放的具体参数(如采样率、通道数、编码方式)也需要根据实际的硬件和需求进行调整。
在实际应用中,你需要与车辆的硬件供应商合作,以确保音频信号的采集和播放能够与车辆的音频系统无缝集成。关注威哥爱编程,一起学鸿蒙。
本文来自博客园,作者:威哥爱编程,转载请注明原文链接:https://www.cnblogs.com/wgjava/p/18649789
合集:
威哥爱编程
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目