更新时间:2025-07-22 07:05: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 | 
是 | 配网模式 | 
代码示例
BLEActivator bleActivator = (BLEActivator) ActivatorService.activator(ActivatorMode.BLE);
参数说明
| 参数名 | 类型 | 是否必填 | 说明 | 
|---|---|---|---|
mode | 
DiscoveryMode | 
是 | 扫描模式 | 
代码示例
IDiscovery iDiscovery = ActivatorService.discovery(DiscoveryMode.BLE);
代码示例
DiscoveryParams discoveryParams = new DiscoveryParams(new DiscoveryParams.Builder().setTimeout(600_000));
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);
iDiscovery.setListener(new IDiscoveryListener() {
            @Override
            public void didDiscover(@NonNull IDiscoveryDevice iDiscoveryDevice) {
                if (iDiscoveryDevice instanceof IBluetoothDevice){
                    ((IBluetoothDevice) iDiscoveryDevice).getAddress();
                    ((IBluetoothDevice) iDiscoveryDevice).getId();
                }
            }
        });
//开始扫描
iDiscovery.startDiscovery();
//停止扫描
iDiscovery.stopDiscovery();
从扫描监听结果中,获取相关参数。
参数说明
| 参数名 | 类型 | 是否必填 | 说明 | 
|---|---|---|---|
| address | String | 是 | 蓝牙设备的地址 | 
| assetId | String | 是 | 设备的资产或空间 ID | 
| deviceType | Int | 否 | 设备类型 | 
| uuid | String | 是 | 设备的 UUID | 
| productId | String | 是 | 设备的产品 ID | 
| time | long | 否 | 激活超时时间(单位:毫秒) | 
BLEActivatorParams params = new BLEActivatorParams.Builder()
                .setAddress("address")
                .setAssetId("assetId")
                .setDeviceType(deviceType)
                .setUuid("uuid")
                .setProductId("productId")
                .setTimeout(time)
                .build();
        bleActivator.setParams(params);
代码示例
bleActivator.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: ");
            }
        });
该方法用于开始设备配对操作。
代码示例
bleActivator.start();
代码示例
bleActivator.stop();
代码示例
bleActivator.destroy();
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈