android ble 服务端 gatt 怎么设置 Advertising_Type (广播类型)
时间: 2024-10-08 11:11:58 浏览: 51
AndroidBLE聊天案例BLE服务端
5星 · 资源好评率100%
在Android的BLE(蓝牙低功耗)服务端中,通过GattServer API来设置Advertising Type(广播类型),通常是在创建Service的时候或者在开始广告周期之前配置。Advertising Type决定了设备如何向周围的蓝牙设备发送其服务信息。
主要有以下几种Advertising Types:
1. **ADVERTISEMENT**(0x00):标准的广播模式,所有连接请求都会被忽略,适用于想要广泛传播数据的情况。
2. **SCAN_RESPONSE**(0x01):仅在扫描期间响应查询,通常用于设备发现阶段,提供更详细的服务描述。
3. **LE_ADVERTISING_WITHOUT_LOCAL_NAME**(0x09):类似ADVERTISEMENT,但不包含本地名称(name),适合小型设备节省资源。
4. **Solicited Solicitation**(0x0A):针对特定已知设备地址的广播,如定向通知。
5. **LE_GENERAL_DISCOVERABLE**(0x0B):设备进入通用可发现模式,直到手动关闭广告。
为了设置Advertising Type,你需要在`BluetoothLeAdvertiser`上执行以下步骤:
```java
// 创建一个广告实例
BluetoothLeScanSettings scanSettings = new BluetoothLeScanSettings.Builder().setScanMode(BluetoothLeScan.SCAN_MODE_LOW_LATENCY).build();
BluetoothLeAdvertiser advertiser = getBluetoothAdapter().getBluetoothLeAdvertiser();
// 创建广告数据
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true) // 根据需求设置是否包含设备名称
.setServiceUuids(Arrays.asList(uuid)) // 设置你想展示的服务UUID列表
.build();
// 如果需要指定广播类型,例如ADVERTISEMENT
int advertisingType = BluetoothLeAdvertiser.ADVERTISEMENT;
AdvertiseOptions options = new AdvertiseOptions.Builder().setTxPowerLevel(TX_POWER_LEVEL_DBM).setAdvertiseMode(advertisingType).build();
// 开始广告
advertiser.startAdvertising(advertiseData, options);
```
记得替换`uuid`为你实际要宣传的服务的UUID,并根据应用需求调整其他参数。
阅读全文