//蓝牙扫描部分 ,拿去可以直接使用
//扫描回调
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private ScanCallback scanCallback=new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
super.onScanResult(callbackType, result);
bluetoothDeviceList.add(result.getDevice());
System.out.println("扫描到设备:" + result.getDevice().getName() + " " + result.getDevice().getAddress() + " " + result.getDevice().getUuids());
}
};
//扫描定时
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public boolean Scandev(boolean isScan, final long ScanTime){
final ScanSettings.Builder builder = new ScanSettings.Builder()
//设置高功耗模式
.setScanMode(SCAN_MODE_LOW_LATENCY);
//android 6.0添加设置回调类型、匹配模式等
if(android.os.Build.VERSION.SDK_INT >= 23) {
//定义回调类型
builder.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES);
//设置蓝牙LE扫描滤波器硬件匹配的匹配模式
builder.setMatchMode(ScanSettings.MATCH_MODE_STICKY);
}
//芯片组支持批处理芯片上的扫描
if (bluetoothAdapter.isOffloadedScanBatchingSupported()) {
//设置蓝牙LE扫描的报告延迟的时间(以毫秒为单位)
//设置为0以立即通知结果
builder.setReportDelay(0L);
}
ScanSettings mScanSettings=builder.build();
if(isScan) {
final Handler handler=new Handler();
final Runnable runnable=new Runnable() {
@Override
public void run() {
bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
handler.removeCallbacks(this);
}
};
handler.postDelayed(runnable,ScanTime);
bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
bluetoothAdapter.getBluetoothLeScanner().startScan(null,mScanSettings,scanCallback);
}else{
bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
}
return true;
}