本文主要介绍蓝牙设备与手机一对一相连的 蓝牙单点 技术。
准备工作
- 系统要求:蓝牙使用需要安卓 4.3 以及以上版本,智能生活 App SDK 从安卓 4.4 开始支持。
- Manifest 权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
- 蓝牙权限检测:每次扫描和连接前,都要进行检测,否则 App 无法正常使用蓝牙。
- App 在使用蓝牙连接或者扫描操作前,需要检查 App 定位权限是否被允许。
- 检查蓝牙状态是否为开启。
说明:该部分检查逻辑,智能生活 SDK 未提供 API,您可自行检测。
扫描设备
开始扫描
待配网的蓝牙设备会向周围发送蓝牙广播包,SDK 会根据协议对广播包进行解析发现周围的涂鸦蓝牙单点设备和双模设备等。
⚠️注意:蓝牙设备扫描前需要进行权限检测,只有具备权限才能正常扫描:
- 蓝牙是否打开。
- 应用是否具有定位权限。
接口说明
void startLeScan(LeScanSetting setting, TyBleScanResponse response);
参数说明
参数 | 类型 | 说明 |
---|---|---|
setting | LeScanSetting | 扫描的设置 |
response | TyBleScanResponse | 扫描结果的回调,不能为空 |
构建类说明
LeScanSetting.Builder
用于构建需要扫描设备的设置。
方法名 | 参数 | 说明 | 是否必需 |
---|---|---|---|
setTimeout() | long | 设置超时时间 默认:40000;单位:毫秒 |
可选 |
addScanType() | ScanType |
|
必需 |
setRepeatFilter() | boolean | 重复过滤,默认:true | 可选 |
示例代码
LeScanSetting scanSetting = new LeScanSetting.Builder()
.setTimeout(60000) // 扫描的超时时间:ms
.addScanType(ScanType.SINGLE) // 若需要扫描蓝牙设备,则只需要添加 ScanType.SINGLE
// .addScanType(ScanType.SIG_MESH) 可同时添加其他类型设备
.build();
// 开始扫描
TuyaHomeSdk.getBleOperator().startLeScan(scanSetting, new TyBleScanResponse() {
@Override
public void onResult(ScanDeviceBean bean) {
// 回调扫描的结果 TODO
}
});
回调说明
ScanDeviceBean
说明
属性 | 类型 | 说明 |
---|---|---|
id | String | 扫描 ID 通常由 UUID 组成,可以唯一区别设备 |
name | String | 扫描到的蓝牙名称,一般为空 |
providerName | String | 取值为 SingleBleProvider 则表示只开发单点设备,您无需关注该字段 |
data | byte[] | 原始数据 |
configType | String |
|
productId | String | 产品 ID |
uuid | String | 设备 UUID,设备唯一码 |
mac | String | 设备 Mac,不可作为唯一码 |
isbind | boolean | 设备是否被绑定,能回调的均为未配网的设备 |
flag | int |
|
address | String | 设备地址 |
deviceType | int | 设备类型,用于区分不同协议的设备,您无需关注该字段 |
deviceType
表示待配网设备类型,若带有 Wi-Fi
的双模设备见 双模配网,蓝牙设备见 蓝牙配网。
deviceType 值 | configType | 设备类型 |
---|---|---|
200 | config_type_single | 蓝牙设备 |
300 | config_type_single | 蓝牙设备 |
301 | config_type_wifi | Wi-Fi + 蓝牙双模设备 |
304 | config_type_wifi | Wi-Fi + 蓝牙双模设备(支持蓝牙兜底配网) |
400 | config_type_single | 蓝牙设备 |
401 | config_type_wifi | Wi-Fi + 蓝牙双模设备 |
404 | config_type_wifi | Wi-Fi + 蓝牙双模设备(支持蓝牙兜底配网) |
查询设备名称
扫描到目标设备以后,可以通过查询显示产品配置的名称和图标。
接口说明
void getActivatorDeviceInfo(String productId, String uuid, String mac, ITuyaDataCallback<ConfigProductInfoBean> callback);
参数说明
参数 | 类型 | 说明 |
---|---|---|
productId | String | Sc |