1.添加权限
在AndroidManifest.xml文件中添加以下权限:
2.请求位置权限
请求位置权限以便扫描设备:
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSION_REQUEST_CODE);
3.定义扫描回调
定义BleScanCallback,以便在设备被扫描到时执行相应操作:
private final ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
super.onScanResult(callbackType, result);
// 处理扫描到的设备
}
@Override
public void onScanFailed(int errorCode) {
super.onScanFailed(errorCode);
// 处理扫描失败
}
};
4.开始扫描
使用BluetoothLeScanner进行扫描:
BluetoothLeScanner scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
if (scanner != null) {
scanner.startScan(mScanCallback);
}
注意:在Android 11中,只有在应用程序在前台运行或具有FOREGROUND_SERVICE权限时,才能扫描蓝牙设备。如果应用程序在后台运行,则只能使用周围设备扫描API(如WifiP2pManager.discoverPeers())来扫描附近的设备。