更新时间:2024-09-03 07:50:56下载pdf
系统要求:蓝牙使用需要安卓 4.3 以及以上版本,智慧行业 App SDK 从安卓 6.0 开始支持。
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" />
<!-- Android 12 新增 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
蓝牙权限检测:每次扫描和连接前,都要进行检测,否则 App 无法正常使用蓝牙。
该部分检查逻辑,智慧行业 App SDK 未提供 API,您可自行检测。
参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
mode |
ActivatorMode |
是 | 配网模式 |
代码示例
BLEWIFIActivator blewifiActivator = (BLEWIFIActivator) ActivatorService.activator(ActivatorMode.BLE_WIFI);
参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
mode |
DiscoveryMode |
是 | 扫描模式 |
代码示例
IDiscovery iDiscovery = ActivatorService.discovery(DiscoveryMode.BLE_WIFI);
代码示例
DiscoveryParams.Builder builder = new DiscoveryParams.Builder();
builder.setTimeout(600_000);
DiscoveryParams discoveryParams = new DiscoveryParams(builder);
iDiscovery.setParams(discoveryParams);
参数说明
IBluetoothDevice
数据模型说明
参数名 | 类型 | 说明 |
---|---|---|
getId | 函数 | 获取蓝牙设备的 ID |
getName | 函数 | 获取蓝牙设备的名称 |
getData | 函数 | 获取设备数据 |
getConfigType | 函数 | 获取配置类型
|
getAddress | 函数 | 获取设备的蓝牙地址 |
getDeviceType | 函数 | 获取设备类型 |
getUUID | 函数 | 获取设备的 UUID |
getMAC | 函数 | 获取设备的 MAC 地址 |
getProductId | 函数 | 获取设备的产品 ID |
isBind | 函数 | 判断设备是否已绑定 |
getFlag | 函数 |
|
getDeviceType
表示待配网设备类型
getDeviceType 值 | getConfigType | 设备类型 |
---|---|---|
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 + 蓝牙双模设备(支持蓝牙兜底配网) |
代码示例 |
IDiscovery iDiscovery = ActivatorService.discovery(DiscoveryMode.BLE_WIFI);
iDiscovery.setListener(new IDiscoveryListener() {
@Override
public void didDiscover(@NonNull IDiscoveryDevice iDiscoveryDevice) {
if (iDiscoveryDevice instanceof IBluetoothDevice){
((IBluetoothDevice) iDiscoveryDevice).getAddress();
((IBluetoothDevice) iDiscoveryDevice).getId();
((IBluetoothDevice) iDiscoveryDevice).getDeviceType();
}
}
});
//开始扫描
iDiscovery.startDiscovery();
//停止扫描
iDiscovery.stopDiscovery();
从扫描监听结果中,获取相关参数。
参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
address | String | 是 | 蓝牙设备的地址 |
assetId | String | 是 | 设备的资产或空间 ID |
token | String | 是 | 设备的令牌 |
pwd | String | 否 | Wi-Fi 密码 |
uuid | String | 是 | 设备的 UUID |
ssid | String | 否 | Wi-Fi 的 SSID |
mac | String | 否 | 设备的 MAC 地址 |
time | long | 否 | 激活超时时间(单位:毫秒) |
phase1Timeout | long | 否 | 设备连云激活配网超时时长,默认:60000,单位:ms |
onlyConnectBle | Boolean | 否 | 仅蓝牙连接激活,默认:false |
BLEWIFIActivatorParams params = new BLEWIFIActivatorParams.Builder()
.setAddress("address")
.setAssetId("assetId")
.setToken("token")
.setPwd("pwd")
.setUuid("uuid")
.setSsid("ssid")
.setMac("mac")
.setTimeout(time)
.build();
blewifiActivator.setParams(params);
代码示例
blewifiActivator.setListener(new IActivatorListener() {
@Override
public void onSuccess(@Nullable IDevice iDevice) {
Log.d(TAG, "onSuccess: ");
}
@Override
public void onError(@NonNull String s, @NonNull String s1) {
Log.d(TAG, "onError: ");
}
});
// 新增增强配网监听,旧版本监听继续兼容
blewifiActivator.setListener(new IExtMultiModeActivatorListener() {
@Override
public void onActivatorStatePauseCallback(@NonNull String uuid, int configStage, int status) {
}
@Override
public void onSuccess(@Nullable IDevice iDevice) {
}
@Override
public void onError(@NonNull String s, @NonNull String s1) {
}
});
onActivatorStatePauseCallback
回调参数说明:
配网阶段 configStage |
说明 | 配网阶段状态 status |
---|---|---|
0 | 配网阶段激活 |
|
1 | 代理激活阶段 |
|
2 | 联网阶段 |
|
3 | 激活阶段 |
|
该方法用于开始设备配对操作。
代码示例
blewifiActivator.start();
代码示例
blewifiActivator.stop();
代码示例
blewifiActivator.destroy();
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈