我通过适用于Android的Nordic库thingylib
(github)来管理与Thingy52的连接,并在回调侦听器ThingyListener
中接收有关设备的信息(例如onGravityVectorChangedEvent
,onAccelerometerValueChangedEvent
,[C0 ],依此类推...)。
我无法做(而且我找不到方法)是我如何获取有关与设备连接的信息,确切地说是RSSI值。
使用onGyroscopeValueChangedEvent
,在BluetoothLeScannerCompat扫描回调中,我检测到thingy52蓝牙设备及其RSSI值,但是如果我设置了较高的扫描频率,例如onBatchScanResults
,它几乎始终不会检测到设备。
我如何进行扫描:
.setReportDelay(10)
[我需要获得private void startBLEScan() {
// set scan
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setReportDelay(10) // set frequency
.setUseHardwareBatchingIfSupported(false)
.build();
// filter scan by uuid
List<no.nordicsemi.android.support.v18.scanner.ScanFilter> filters = new ArrayList<>();
filters.add(new ScanFilter.Builder().setServiceUuid(new ParcelUuid(ThingyUtils.THINGY_BASE_UUID)).build());
// start scan, this will trigger the scanCallback
BluetoothLeScannerCompat scanner = BluetoothLeScannerCompat.getScanner();
scanner.startScan(filters, scanSettings, scanCallback);
}
private final ScanCallback scanCallback = new ScanCallback() {
@Override
public void onBatchScanResults(@NonNull List<ScanResult> results) {
super.onBatchScanResults(results);
for(ScanResult result : results) {
result.getRssi(); // read RSSI values
}
}
};
的频率,或10Hz
北欧thingy52的RSSI值,我无法从100Hz
事件中获得。
我该怎么办?预先谢谢你。
我的ThingyListener示例:
ThingyListener
我终于以这种方式解决了: