接口说明
接口名 |
功能描述 |
---|---|
startScan(List<BleScanFilter> filters) |
进行BLE蓝牙扫描,并使用filters对结果进行过滤。 |
stopScan() |
停止BLE蓝牙扫描。 |
getDevicesByStates(int[] states) |
根据状态获取连接的外围设备。 |
BleCentralManager(Context context, BleCentralManagerCallback callback) |
获取中心设备管理对象。 |
接口名 |
功能描述 |
---|---|
scanResultEvent(BleScanResult result) |
扫描到BLE设备的结果回调。 |
groupScanResultsEvent(List<BleScanResult> scanResults) |
扫描到一组BLE设备的结果回调。 |
scanFailedEvent(int resultCode) |
启动扫描失败的回调。 |
接口名 |
功能描述 |
---|---|
BleAdvertiser(Context context, BleAdvertiseCallback callback) |
用于获取广播操作对象。 |
startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse) |
进行BLE广播,第一个参数为广播参数,第二个为广播数据,第三个参数是扫描和广播数据参数的响应。 |
stopAdvertising() |
停止BLE广播。 |
startResultEvent(int result) |
广播回调结果。 |
中心设备进行BLE扫描
- 进行BLE扫描之前先要继承BleCentralManagerCallback类实现scanResultEvent和scanFailedEvent回调函数,用于接收扫描结果。
- 调用BleCentralManager(BleCentralManagerCallback callback)接口获取中心设备管理对象。
获取扫描过滤器,过滤器为空时为不使用过滤器扫描,然后调用startScan()开始扫描BLE设备,在回调中获取扫描到的BLE设备。
// 实现扫描回调
public class ScanCallback implements BleCentralManagerCallback{
List<BleScanResult> results = new ArrayList<BleScanResult>();
public void scanResultEvent(BleScanResult resultCode) {
// 对扫描结果进行处理
results.add(resultCode);
}
public void scanFailedEvent(int resultCode) {
HiLog.warn(TAG,“Start Scan failed, Code: %{public}d”, resultCode);
}
public void groupScanResultsEvent(final List<BleScanResult> scanResults){
// 对扫描结果进行处理
}
}
// 获取中心设备管理对象
private ScanCallback centralManagerCallback = new ScanCallback();
private BleCentralManager centralManager = new BleCentralManager(context, centralManagerCallback);
// 创建扫描过滤器然后开始扫描
List<BleScanFilter> filters = new ArrayList<BleScanFilter>();
centralManager.startScan(filters);
外围设备进行BLE广播
- 进行BLE广播前需要先继承advertiseCallback类实现startResultEvent回调,用于获取广播结果。
- 调用接口BleAdvertiser(Context context, BleAdvertiseCallback callback)获取广播对象,构造广播参数和广播数据。
调用startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse)接口开始BLE广播。
// 实现BLE广播回调
private BleAdvertiseCallback advertiseCallback = new BleAdvertiseCallback() {
public void startResultEvent(int result) {
if(result == BleAdvertiseCallback.RESULT_SUCC){
// 开始BLE广播成功
}else {
// 开始BLE广播失败
}
}
};
// 获取BLE广播对象
private BleAdvertiser advertiser = new BleAdvertiser(this,advertiseCallback);
// 创建BLE广播参数和数据
private BleAdvertiseData data = new BleAdvertiseData.Builder()
.addServiceUuid(SequenceUuid.uuidFromString(Server_UUID)) // 添加服务的UUID
.addServiceData(SequenceUuid.uuidFromString(Server_UUID), new byte[]{0x11}) // 添加广播数据内容
.build();
private BleAdvertiseSettings advertiseSettings = new BleAdvertiseSettings.Builder()
.setConnectable(true) // 设置是否可连接广播
.setInterval(BleAdvertiseSettings.INTERVAL_SLOT_DEFAULT) // 设置广播间隔
.setTxPower(BleAdvertiseSettings.TX_POWER_DEFAULT) // 设置广播功率
.build();
// 开始广播
advertiser.startAdvertising(advertiseSettings, data, null);