看官们,我们在上一章回中介绍了BLE开发中蓝牙扫描设备的例子,本章回中我们继续介绍该例子,闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们查看官方的API手册时手册时就会发现startLeScan方法已经被弃用了,官方提示如下:
This method was deprecated in API level 21. use
BluetoothLeScanner#startScan(List, ScanSettings, ScanCallback) instead.
不过我在Android10上试用后发现,它还可以正常使用。不过我们最好还是依据官方的建议,换用BluetoothLeScanner类的startScan方法来扫描设备;下面是该方法的原型:
public void startScan (List<ScanFilter> filters, ScanSettings settings, ScanCallback callback)
目前官方文档中没有给出该方法的使用示例,大家可以参考我们在下面代码中的示例:
private void searchBLEDeviceWithScanner(boolean enable) {
if(mScaning)
return;
if(mScanner == null) {
mScanner = mBluetoothAdapter.getBluetoothLeScanner();
}
if(enable) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(mScaning) {
mScanner.stopScan(mScanCallback);
mScaning = false;
}
}
}, 10000);
mScaning = true;
List<ScanFilter> filters = new ArrayList<ScanFilter>();
//这里使用的SEARCH_SERVICE_UUID可以向蓝牙芯片厂商获取
filters.add(0, new ScanFilter.Builder().setServiceUuid(new ParcelUuid(UUID.fromString(SEARCH_SERVICE_UUID))).build());
ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
mScanner.startScan(filters,settings,mScanCallback);
} else {
mScaning = false;
mScanner.stopScan(mScanCallback);
}
}
该方法的设计方式也是回调方式,就是说该方法只负责扫描工作,扫描后的结果在回调函数中,也就是该方法的第三个参数。该方法中的三个参数对我们来说都是新的,我们在后面的章回中再做详细介绍。
各位看官,关于Android中蓝牙扫描设备的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!