鸿蒙NEXT开发【合理使用蓝牙资源&蓝牙实战】后台任务功耗优化

无长时任务的应用退到后台不允许进行蓝牙扫描。

约束

应用如果不主动停止发起的扫描,系统会在应用退到后台时强制停止扫描,回到前台后恢复扫描。

示例

import { UIAbility } from '@kit.AbilityKit';
import { ble } from '@kit.ConnectivityKit';

export default class EntryAbility extends UIAbility {
  // ...
  onForeground(): void {
    //在前台时按业务所需启动Ble扫描和广播
    ble.startBLEScan([scanFilter], scanOptions);
    ble.startAdvertising(setting, advData, advResponse);
  }

  onBackground(): void {
    //退到后台停止Ble扫描和广播,和申请时对应
    ble.stopBLEScan();
    ble.stopAdvertising();
  }
}

蓝牙实战

广播与扫描开发

简介

广播与扫描,主要提供了蓝牙设备的开启广播、关闭广播、开启扫描、关闭扫描方法,通过广播和扫描发现对端蓝牙设备,实现低功耗的通信。

场景介绍

主要场景有:

  • 开启、关闭广播
  • 开启、关闭扫描

接口说明

具体接口说明如下表。

接口名 功能描述
startBLEScan() 发起BLE扫描流程。
stopBLEScan() 停止BLE扫描流程。
startAdvertising() 开始发送BLE广播。
disableAdvertising() 临时停止BLE广播。
enableAdvertising() 临时启动BLE广播。
stopAdvertising() 停止发送BLE广播。
on(type: ‘advertisingStateChange’) 订阅BLE广播状态。
off(type: ‘advertisingStateChange’) 取消订阅BLE广播状态。
on(type: ‘BLEDeviceFind’) 订阅BLE设备发现上报事件。
off(type: ‘BLEDeviceFind’) 取消订阅BLE设备发现上报事件。

主要场景开发步骤

开启、关闭广播

  1. import需要的ble模块。

  2. 开启设备的蓝牙。

  3. 需要SystemCapability.Communication.Bluetooth.Core系统能力。

  4. 开启广播,对端设备扫描该广播。

  5. 关闭广播。

  6. 示例代码:

import { ble } from '@kit.ConnectivityKit';
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';

const TAG: string = 'BleAdvertisingManager';

export class BleAdvertisingManager {
  private advHandle: number = 0xFF; // default invalid value

  // 1 订阅广播状态
  public onAdvertisingStateChange() {
    try {
      ble.on('advertisingStateChange', (data: ble.AdvertisingStateChangeInfo) => {
        console.info(TAG, 'bluetooth advertising state = ' + JSON.stringify(data));
        AppStorage.setOrCreate('advertiserState', data.state);
      });
    } catch (err) {
      console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }
  }

  // 2 首次启动广播
  public async startAdvertising()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值