接口说明
| 
 接口名  | 
 功能描述  | 
|---|---|
| 
 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);