HarmonyOS Sample 之 Bluetooth 传统蓝牙的使用 原创 精华
目录
HarmonyOS Sample 之 Bluetooth 传统蓝牙的使用
1.介绍
本示例演示了如何对蓝牙进行基本操作,
传统蓝牙本机管理:
主要是针对蓝牙本机的基本操作,包括:打开和关闭蓝牙、设置和获取本机蓝牙名称、扫描和取消扫描周边蓝牙设备、获取本机蓝牙profile对其他设备的连接状态、获取本机蓝牙已配对的蓝牙设备列表。
传统蓝牙远端管理操作:
主要是针对远端蓝牙设备的基本操作,包括:获取远端蓝牙设备地址、类型、名称和配对状态,以及向远端设备发起配对。
传统蓝牙和BLE的的概念请参考 蓝牙开发概述
还有一个小知识点,
调用蓝牙的打开接口需要ohos.permission.USE_BLUETOOTH权限,
调用蓝牙扫描接口需要ohos.permission.LOCATION权限和ohos.permission.DISCOVER_BLUETOOTH权限。
2.搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
下载源码后,使用DevEco Studio 打开项目,模拟器运行即可。
真机运行需要将config.json中的buddleName修改为自己的,如果没有请到AGC上进行配置,参见 使用模拟器进行调试 。
3.代码结构
4.实例讲解
4.1.界面布局
布局 | 效果 |
---|---|
![]() |
![]() |
4.2.后台代码
4.2.1 涉及的相关类
SDK提供的核心类:
BluetoothHost.java//蓝牙主机,可以管理蓝牙,提供了蓝牙的基本操作,打开/关闭/获取状态等。
BluetoothRemoteDevice.java//蓝牙对象,用于建立与对端设备的连接并查询名称、设备类型和配对状态等信息。
自定义的类:
BluetoothItemProvider.java//蓝牙设备列表项提供程序
BluetoothEventListener.java//蓝牙事件监听接口
BluetoothPlugin.java//蓝牙插件
BluetoothDevice.java//蓝牙对象简易模型
4.2.2 BluetoothPlugin.java 蓝牙插件提供的功能
a.初始化BluetoothHost蓝牙主机对象getDefaultHost
b.开启/关闭蓝牙/获取蓝牙状态enableBt/disableBt/getBtState
c.开始蓝牙发现startBtDiscovery
还要注意的是蓝牙发现操作需要申请位置权限。
d.蓝牙设备配对及获取已配对的设备列表startPair/getPairedDevices
e.蓝牙事件的订阅/取消 及 相关事件的处理
在处理蓝牙事件的同时,通过BluetoothEventListener通知MainAbilitySlice。
4.2.3 BluetoothEventListener.java 自定义的蓝牙事件监听器接口
4.2.4 BluetoothItemProvider.java 蓝牙设备列表提供程序
这个可以作为一个标准件了,每个ListContainer都可以用它,包括了列表的通用操作,像数据更新,点击事件等。
4.2.5 MainAbilitySlice.java 主能力页面操作
a.首先是实现了几个相关的接口
Component.ClickedListener 用于实现按钮的点击事件
BluetoothEventListener 用于实现蓝牙事件通知的处理
CheckedStateChangedListener 用于实现switch开关的处理
b.初始化工作
在onActive生命周期函数中
初始化蓝牙插件/初始化容器列表/初始化组件/订阅蓝牙事件
c.实现BluetoothEventListener接口相关函数
d.实现CheckedStateChangedListener接口相关函数
e.实现ClickedListener接口相关函数,开始发现蓝牙
5.完整代码
附件直接下载
很详细的讲解,感谢分享。
注释好评!案例加楼主的文章一起学,事半功倍呀
感谢分享~
求解!为什么用真机调试点击 start discovery 会闪退呢?
如果已经部署到真机的话,结合deveco studio 底部的Hilog和Fault Log 再分析分析,我这边P40 Pro没问题呢
你好, 我想问一下配对成功之后怎么交互信息