最近刚好有一个需求,需要实时收取并保存指定蓝牙广播,用于蓝牙定位应用。
然后我使用老方法注册广播开启蓝牙搜素,发现并不能实时收到广播,有时会隔个几秒。
这个当然是不行的,蓝牙定位最低要求也是需要一秒一次。并且我手上的蓝牙板子,是每300毫秒就发送一次广播的。
在网上找了很多资料,一直没有实现。最近突然发现一个方法可以,好了废话不多说,直接上代码。
1.首先权限配置
2. 6.0以上记得动态权限
if (Build.VERSION.SDK_INT >= 23) {
int checkAccessFinePermission = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
if (checkAccessFinePermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);
Log.e(getPackageName(), "没有权限,请求权限");
return;
}
Log.e(getPackageName(), "已有定位权限");
}
3. 初始化蓝牙BLE
BluetoothAdapter mBluetoothAdapte