当我使用RxAndroidlBle(在Android 6+上)的“ scanBleDevices”时,可以看到我的BLE设备。然后,我使用另一个扫描BLE的应用程序。 最后,当我回到我的RxAndroidlBle应用程序并启动一个新的“ scanBleDevices”时,它找不到这些BLE设备(其他应用程序或系统仍然可以看到它们)。
此外,如果我手动禁用本地化(和/或蓝牙),然后重新启用本地化,则BLE设备会重新出现在我的应用程序中。
您知道原因吗?
版本: 实现“ com.polidea.rxandroidble:rxandroidble:1.4.1”
我也使用TedPermission:
new TedPermission(getContext())
.setPermissionListener(((ScanActivity)getActivity()))
.setPermissions(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
.setDeniedMessage(R.string.permissions_refused)
.check();
然后
@Override
public void onPermissionGranted()
{
rxBleClient.scanBleDevices(
new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)
.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
.build(),
ScanFilter.empty())
.doOnUnsubscribe(this::removeScanningSubscription)
.doOnError(throwable -> Log.e(TAG, throwable.toString()))
.subscribe(
scanResult -> {
if (scanResult.getBleDevice().getName() != null)
{
EventBus.getDefault().post(new EventBLE(scanResult.getBleDevice()));
}
},
throwable -> {
// some error process
}
);
}
您知道原因吗?以及如何解决呢?
谢谢