蓝牙双模配网

更新时间: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 在使用蓝牙连接或者扫描操作前,需要检查 App 定位权限是否被允许。
    • 检查蓝牙状态是否已开启。

      该部分检查逻辑,智慧行业 App SDK 未提供 API,您可自行检测。

IActivator 初始化

参数说明

参数名 类型 是否必填 说明
mode ActivatorMode 配网模式

代码示例

BLEWIFIActivator blewifiActivator = (BLEWIFIActivator) ActivatorService.activator(ActivatorMode.BLE_WIFI);

扫描设备 IDiscovery 初始化

参数说明

参数名 类型 是否必填 说明
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);

注册 IDiscoveryListener 监听扫描设备结果

参数说明

IBluetoothDevice 数据模型说明

参数名 类型 说明
getId 函数 获取蓝牙设备的 ID
getName 函数 获取蓝牙设备的名称
getData 函数 获取设备数据
getConfigType 函数 获取配置类型
  • config_type_single:单点设备
  • config_type_wifi:双模设备
getAddress 函数 获取设备的蓝牙地址
getDeviceType 函数 获取设备类型
getUUID 函数 获取设备的 UUID
getMAC 函数 获取设备的 MAC 地址
getProductId 函数 获取设备的产品 ID
isBind 函数 判断设备是否已绑定
getFlag 函数
  • bit0:是否支持 5G,表明双模设备是否支持 5G Wi-Fi
  • bit2:是否分享设备
  • bit3:是否⽀持蓝牙兜底配网设备
  • bit4:是否是扫码配网设备

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);

注册 IActivatorListener 监听配网结果

代码示例

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 配网阶段激活
  • 0:获取配网信息成功
  • 1:配网信息错误
1 代理激活阶段
  • 0:获取代理激活信息成功
  • 1:配网信息错误
2 联网阶段
  • 0:连接路由器成功
  • 1:联网信息错误
  • 2:找不到路由器
  • 3:路由器密码错误
  • 4:连接路由器失败
  • 5:DHCP 失败
3 激活阶段
  • 1:激活信息错误
  • 6:连云失败
  • 7:获取 URL 失败
  • 8:激活接口失败
  • 9:激活成功

开始配网

该方法用于开始设备配对操作。

代码示例

blewifiActivator.start();

停止配网

代码示例

blewifiActivator.stop();

销毁配网实例

代码示例

blewifiActivator.destroy();