HarmonyOS鸿蒙Next中设置中的蓝牙

HarmonyOS鸿蒙Next中设置中的蓝牙 像设置那样能搜索蓝牙能匹配设备,能看到其他设备的名称

3 回复

提供一个扫描蓝牙设备的demo,并把扫描到的设备列表显示处理

代码示例

import connection from '@ohos.bluetooth.connection';
import { BusinessError } from '@ohos.base';
import { promptAction } from '@kit.ArkUI';
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';

interface Device {
  name?: string
  deviceId?: string
}

@Entry
@Component
struct Index {
  private context = this as common.UIAbilityContext
  @State findList: Device[] = []

  aboutToAppear(): void {
    const permissions: Array<Permissions> = ['ohos.permission.ACCESS_BLUETOOTH'];
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(this.context, permissions).then((data) => {
      // 授权成功
    }).catch((err: BusinessError) => {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }

  build() {
    Flex({ direction: FlexDirection.Column }) {
      Row() {
        Button("扫描蓝牙").onClick(() => {
          try {
            connection.startBluetoothDiscovery();
            console.info('startBleScan success')
            promptAction.showToast({
              message: "已打开"
            })
          } catch (err) {
            promptAction.showToast({
              message: "蓝牙开关未打开"
            })
          }
          connection.on('bluetoothDeviceFind', (data: string[]) => {
            console.log('data: ' + JSON.stringify(data) + connection.getRemoteDeviceName(data[0]))
            if (!this.findList.find(item => item.deviceId === data[0])) {
              this.findList.push({
                name: connection.getRemoteDeviceName(data[0]),
                deviceId: data[0]
              })
            }
          });
        })
        Button("停止扫描").onClick(() => {
          try {
            connection.stopBluetoothDiscovery();
            console.info('stopBleScan success');
            promptAction.showToast({
              message: "停止扫描"
            })
          } catch (err) {
            promptAction.showToast({
              message: "蓝牙已关闭"
            })
          }
        })
        Button("清空").onClick(() => {
          this.findList = []
        })
      }
      List() {
        ForEach(this.findList, (item: Device) => {
          ListItem() {
            Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) {
              Column() {
                Text(`设备名称:${item?.name}`)
                Text(`设备id:${item?.deviceId}`).fontColor("#ffcbcbcb").fontSize(12)
              }
              .alignItems(HorizontalAlign.Start)
              Row({ space: 5 }) {
                Button("链接").width(60).height(20).fontSize(12).onClick(() => {
                  try {
                    connection.pairDevice(item.deviceId, () => {
                      promptAction.showToast({
                        message: "配对成功"
                      })
                    });
                  } catch (err) {
                    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
                  }
                })
              }
            }
            .height(50).backgroundColor("#fff").width("100%").borderRadius(10).padding(6)
          }
          .padding(4)
        })
      }
      .height(200).width("100%").flexGrow(1).flexShrink(1).flexBasis(1)
    }
    .padding(10).width('100%').height('100%').backgroundColor("#ffcdcdcd")
  }
}

说明

  • 我这边测试是可以扫描设备显示名称,调用的是startBluetoothDiscovery方法。
  • connection.startBluetoothDiscovery是经典蓝牙扫描,ble.startBLEScan是低功耗蓝牙扫描。blestartBLEScan是只能扫描到ble设备,如果想要扫描到系统设置中的所有设备,需要去调用connection.startBluetoothDiscovery
  • 可以使用connection.getRemoteDeviceClass(data[0])获取蓝牙设备信息

设备枚举参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bluetooth-constant-V5#majorclass

更多关于HarmonyOS鸿蒙Next中设置中的蓝牙的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,蓝牙设置允许用户管理和连接蓝牙设备。用户可以通过“设置”应用中的“蓝牙”选项来开启或关闭蓝牙功能。在蓝牙设置界面,系统会显示可用的蓝牙设备列表,用户可以选择设备进行配对和连接。配对成功后,设备会显示为已连接状态,并可以在设备详情中查看连接状态和已配对设备列表。此外,用户还可以通过蓝牙设置界面取消配对或删除已配对的设备。HarmonyOS鸿蒙Next的蓝牙功能支持多种蓝牙协议,如A2DP、HFP、AVRCP等,以确保与各类蓝牙设备的兼容性。在蓝牙设置中,用户还可以根据需要调整蓝牙设备的音频输出和输入设置,以优化音频体验。

在HarmonyOS(鸿蒙Next)中设置蓝牙的步骤如下:

  1. 进入设置:打开手机的“设置”应用。
  2. 选择蓝牙:在设置菜单中找到并点击“蓝牙”选项。
  3. 开启蓝牙:点击蓝牙开关,将其打开。
  4. 搜索设备:系统会自动搜索附近的蓝牙设备,等待设备出现在列表中。
  5. 配对连接:点击要连接的设备名称,按照提示完成配对。

通过这些步骤,你可以在HarmonyOS中轻松设置和使用蓝牙功能。

回到顶部