首页 > 其他分享 >鸿蒙NEXT开发中使用星闪服务

鸿蒙NEXT开发中使用星闪服务

时间:2025-01-03 11:47:05浏览次数:1  
标签:err 鸿蒙 音频 NEXT 广播 星闪 降噪 event

大家好,我是 V 哥,学习鸿蒙开发的星闪服务,整理了这个学习笔记分享给大家。NearLink Kit(星闪服务)是鸿蒙操作系统提供的一种低功耗、高速率的短距离通信服务,它允许设备之间进行连接和数据交互。以下是一些具体的使用案例和步骤,以帮助理解如何在实际业务中使用星闪服务。

以下这些场景使用星闪

  1. 智能座舱

    • 车内降噪:使用星闪服务在车辆内部进行音频信号的传输,以实现主动降噪功能。
    • 互动投屏:通过星闪服务将手机或其他移动设备上的屏幕内容无线传输到车载显示屏幕上。
    • 车载娱乐:利用星闪服务连接车载信息系统和乘客的个人设备,提供个性化娱乐体验。
    • 智能车钥匙:通过星闪服务实现车辆的无钥匙进入和启动功能,提升车辆的智能化水平。
  2. 智能家居

    • 设备控制:使用星闪服务连接家中的各种智能设备,如智能灯泡、智能插座等,实现远程控制和自动化操作。
  3. 智能终端

    • 鼠标和手写笔:中心设备(如电脑或平板)通过星闪服务与外围设备(鼠标、手写笔)配对连接,使用鼠标和手写笔作为输入控制中心设备。
  4. 智能制造

    • 生产线自动化:在生产线上使用星闪服务连接各种传感器和控制器,实现生产过程的实时监控和优化。

开发步骤

以下是使用NearLink Kit实现星闪广播的基本步骤:

  1. 准备软硬件环境

    • 确保开发环境为DevEco Studio 5.0.1 Beta3及以上版本,SDK为API 13 beta及以上。
    • 确认终端设备支持星闪功能,如Mate 60 Pro、Pura70系列等。
  2. 申请权限

    • 动态申请星闪权限ohos.permission.ACCESS_NEARLINK
  3. 广播接口说明

    • 使用startAdvertising接口启动星闪广播。
    • 使用stopAdvertising接口停止星闪广播。
    • 通过onoff接口订阅和取消订阅星闪广播状态变化事件。
  4. 广播实现

    • 创建一个类(如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生命周期方法...
});

请注意,案例中的降噪算法是一个占位符,你需要根据实际的降噪算法来实现它。此外,音频采集和播放的具体参数(如采样率、通道数、编码方式)也需要根据实际的硬件和需求进行调整。

在实际应用中,你需要与车辆的硬件供应商合作,以确保音频信号的采集和播放能够与车辆的音频系统无缝集成。关注威哥爱编程,一起学鸿蒙。

标签:err,鸿蒙,音频,NEXT,广播,星闪,降噪,event
From: https://www.cnblogs.com/wgjava/p/18649789

相关文章

  • 鸿蒙开发-阅读器正文页面实现
    鸿蒙开发-阅读器正文页面实现记录开发一个小说阅读应用的过程实现点击书籍,读取该书籍的文件内容,然后显示该书籍正文内容,滑动进行翻页。实现逻辑在书架页面,获取书籍列表,为每一项添加点击事件,进行路由带参跳转,参数为书籍路径或书籍URL,跳转到正文页面。进入正文页面后,设置阅读......
  • 「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
    本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。关键词条件筛选动态数据展示状态管理UI交互查询系统一、功能说明模拟火车票查询系统包含以下功能:用户输入查询条件:支持输入出发......
  • 鸿蒙 NEXT 开发中,使用公共事件进行进程间通信
    大家好,我是V哥,在鸿蒙NEXT开发中,使用公共事件进行进程间通信(IPC)是一种常见的做法。下面我将提供一个完整的业务代码示例,并解释逻辑关系,以便即使是初学者也能按照步骤进行实操,废话不多说,直接上干货。业务场景假设我们有两个应用,应用A和应用B。应用A需要在电量低时通知应用B执......
  • 有度即时通参加广东鸿蒙生态伙伴论坛,共同推动鸿蒙生态建设
    近日,HDD·广东鸿蒙生态伙伴论坛在广州隆重举行。此次论坛由华为技术有限公司主办,广东软件行业协会协办,汇聚了众多业内精英和技术专家,共同探讨鸿蒙生态的最新进展与创新应用。有度即时通作为华为鸿蒙生态的重要合作伙伴参与此次盛会,与众多伙伴共同推进鸿蒙生态建设。    ......
  • wx.nextTick
    wx.nextTick(functioncallback)基础库2.2.3开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.7.1微信Windows版:支持微信Mac版:支持微信鸿蒙OS版:支持功能描述延迟一部分操作到下一个时间片再执行。(类似于setTimeout)参数functionca......
  • 鸿蒙应用开发者认证题库
    判断题1. “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。为了实现这一目的,HarmonyOS提供了多端开发环境,多端开发能力以及多端分发机制。正确(True)错误(False)正确 2. 《鸿蒙生态应用开发白皮书》全面阐释了鸿蒙生态下应用开发核心理念、关键能......
  • 谁还在期待2025?他们说最好的不是过去,是NEXT
    2024很快就要画上句点,这一年对很多人来说都不太容易,在不确定性中困惑着,焦虑着。回望这一年,我们却也深深铭记那些“高光时刻”:不被看好的运动健儿,在世界瞩目中摘回属于他的金牌;减重一百斤遭到质疑,她直接把过程搬上大银幕;还有人给自己半年时间,开启从川藏到海岸线的骑行…......
  • 鸿蒙元应用与卡片使用 @LocalStorageProp 进行通讯的技术分享
    ​ 在鸿蒙系统(HarmonyOS)的开发中,@LocalStorageProp是一个非常有用的装饰器,用于在组件之间共享状态或数据。特别是在卡片(Card)和元服务(MetaService)之间进行通讯时,@LocalStorageProp可以帮助我们实现数据的持久化和同步。本文将通过一个具体的案例,详细介绍如何使用@LocalStorag......
  • 鸿蒙保存图片到相册
    在其它手机端,若想保存图片到相册,需要申请对应的权限,而鸿蒙中对应的权限为受限开放权限,普通应用一般不让申请,这个时候我们可以使用安全保存控件来临时申请权限,用于保存图片到相册。受限开放权限应用权限分为三类,一类是对所有应用开放,所有应用均可申请使用;一类是受限开放权限,仅少......
  • 你有看过vue的nextTick源码吗?
    是的,我了解过Vue的$nextTick源码。$nextTick是Vue中一个非常重要的机制,它允许我们在DOM更新后执行某些操作,确保我们可以获取到更新后的DOM状态。下面我将对$nextTick的源码进行简要的解析和归纳:$nextTick的基本原理:Vue在更新DOM时是异步执行的。当数据发生变化时,Vue会将这个......