更新时间:2024-09-03 07:05:48下载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();
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈