一、准备
权限
<!--蓝牙权限和蓝牙设备的扫描设置权限-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!--扫描蓝牙需要位置权限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
二、扫描附近的设备
我们先判断一下有没有位置权限,如果没有,是搜不到附近的设备的。这里我们要借助Handler去实现,因为蓝牙搜索有一定的时间,不可能让手机一直处于搜索蓝牙的阶段,一般是10s。
if (mBleHandler == null) {
mBleHandler = new Handler();
}
mSppAdapter= BluetoothAdapter.getDefaultAdapter();//ble蓝牙
mBleHandler.postDelayed(new Runnable() {
@Override
public void run() {
//10s后扫描结束
mSppAdapter.stopLeScan(leScanCallback);
mBleHandler.removeCallbacksAndMessages(null);//handler close!!!
}
}, 10000);
mSppAdapter.startLeScan(leScanCallback);
扫描到的结果会通过leScanCallback这个接口回调。
private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {