示例参考: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 = getContext(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: Device) => 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") } }1、connection.startBluetoothDiscovery是经典蓝牙扫描,ble.startBLEScan是低功耗蓝牙扫描。ble的startBLEScan是只能扫描到ble设备,如果想要扫描到系统设置中的所有设备,需要去调用connection.startbluetoothdiscovery。2、可参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gatt-development-guide-V5使用CONNECTION连接模块和外设配对、连接成功,再使用SOCKET模块继续进行后续的数据传输等功能。数据传输参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/spp-development-guide-V5相关参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/connectivity-kit-intro-V5\#ZH-CN\_TOPIC\_0000001930755869\_\_%E8%93%9D%E7%89%99%E7%AE%80%E4%BB%8B
示例参考:
1、connection.startBluetoothDiscovery是经典蓝牙扫描,ble.startBLEScan是低功耗蓝牙扫描。ble的startBLEScan是只能扫描到ble设备,如果想要扫描到系统设置中的所有设备,需要去调用connection.startbluetoothdiscovery。
2、可参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gatt-development-guide-V5
使用CONNECTION连接模块和外设配对、连接成功,再使用SOCKET模块继续进行后续的数据传输等功能。
数据传输参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/spp-development-guide-V5
相关参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/connectivity-kit-intro-V5\#ZH-CN\_TOPIC\_0000001930755869\_\_%E8%93%9D%E7%89%99%E7%AE%80%E4%BB%8B