蓝牙BLE 4.0 FastBle 蓝牙扫描
程序员文章站
2024-03-24 23:06:10
...
1.初始化及配置
//初始化 及 配置
BleManager.getInstance().init(getApplication());
BleManager.getInstance()
//是否显示框架内部日志
.enableLog(true)
//重连次数
.setMaxConnectCount(17)
//操作超时 5秒
.setOperateTimeout(5000);
2. 获取到BluetoothAdapter
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
3.判断蓝牙是否打开
if (!bluetoothAdapter.isEnabled()) {
Toast.makeText(this, getString(R.string.please_open_blue), Toast.LENGTH_LONG).show();
return;
}
4.动态权限获取 (模糊定位)
//校验是否已具有模糊定位权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
//申请模糊定位权限
ActivityCompat.requestPermissions(MainActivity.this
, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 0);
}
5.开始扫描
BleManager.getInstance().scan(new BleScanCallback() {
@Override
public void onScanStarted(boolean success) {
// 本次扫描动作是否开启成功 success
//会回到主线程,参数表示本次扫描动作是否开启成功。由于蓝牙没有打开,上一次扫描没有结束等原因,会造成扫描开启失败。
}
@Override
public void onLeScan(BleDevice bleDevice) {
super.onLeScan(bleDevice);
//扫描过程中所有被扫描到的结果回调。由于扫描及过滤的过程是在工作线程中的,此方法也处于工作线程中。同一个设备会在不同的时间,携带自身不同的状态(比如信号强度等),出现在这个回调方法中,出现次数取决于周围的设备量及外围设备的广播间隔。
}
@Override
public void onScanning(BleDevice bleDevice) {
//扫描过程中的所有过滤后的结果回调。与onLeScan区别之处在于:它会回到主线程;同一个设备只会出现一次;出现的设备是经过扫描过滤规则过滤后的设备。
}
@Override
public void onScanFinished(List<BleDevice> scanResultList) {
//本次扫描时段内所有被扫描且过滤后的设备集合。它会回到主线程,相当于onScanning设备之和。
}
});
上一篇: var、let、const的区别
下一篇: JavaScript的变量的彻底理解