Java 无法从BLE nordic thingy:52检索RSSI值

Java 无法从BLE nordic thingy:52检索RSSI值,java,android,bluetooth,bluetooth-lowenergy,rssi,Java,Android,Bluetooth,Bluetooth Lowenergy,Rssi,我通过Android的Nordic librarythingylib()连接到thingy52,并在回调侦听器ThingyListener中接收有关该设备的信息(例如,onGravityVectorChangedEvent,OnAccelerometValueChangedEvent,onGyroscopeValueChangedEvent,等等…) 我不能做的(我也找不到如何做)是如何获得与设备连接的信息,确切地说是RSSI值 在onBatchScanResults扫描回调中,我使用,检测th

我通过Android的Nordic library
thingylib
()连接到thingy52,并在回调侦听器
ThingyListener
中接收有关该设备的信息(例如,
onGravityVectorChangedEvent
OnAccelerometValueChangedEvent
onGyroscopeValueChangedEvent
,等等…)

我不能做的(我也找不到如何做)是如何获得与设备连接的信息,确切地说是RSSI值

onBatchScanResults
扫描回调中,我使用,检测thingy52蓝牙设备及其RSSI值,但是如果我设置高扫描频率,例如
.setReportDelay(10)
,它几乎总是检测不到设备

我是如何进行扫描的:

private void startBLEScan(){
//设置扫描
ScanSettings ScanSettings=新建ScanSettings.Builder()
.setScanMode(扫描设置.SCAN\u模式\u低延迟)
.setReportDelay(10)//设置频率
.SetUseHardwareBatchingSupported(false)
.build();
//uuid过滤扫描
列表过滤器=新的ArrayList();
filters.add(new ScanFilter.Builder().setServiceUuid(new parceluid(ThingyUtils.THINGY_BASE_UUID)).build();
//启动扫描,这将触发扫描回调
BluetoothLeScannerCompat scanner=BluetoothLeScannerCompat.getScanner();
scanner.startScan(过滤器、扫描设置、扫描回调);
}
private final ScanCallback ScanCallback=新建ScanCallback(){
@凌驾
public void onBatchScanResults(@NonNull List results){
super.onBatchScanResults(结果);
用于(扫描结果:结果){
result.getRssi();//读取RSSI值
}
}
};
我需要以
10Hz
100Hz
的频率获取北欧thingy52的RSSI值,这是我无法从
ThingyListener
事件中获取的

我怎么做? 先谢谢你

我的ThingyListener示例:

private ThingyListener mThingyListener=new ThingyListener(){
@凌驾
公共void onGravityVectorChangedEvent(蓝牙设备蓝牙设备、浮点x、浮点y、浮点z){
//这里我从设备中获取数据…但没有RSSI值
};

我终于这样解决了:

我不使用
扫描仪Compact
,而是使用
蓝牙GATT

当我将北欧人链接到
ThingyLibSdkManager
时,我也将其链接到一个
GATT

ThingyListenerHelper.RegisterThingListener(getApplicationContext(),mthingListener,设备);
mBluetoothGatt=device.connectGatt(getApplicationContext(),true,gattCallback);
这样,在
mThingylistener
中,现在我可以请求
rssi

@覆盖
public void ongyroscope valuechangedevent(蓝牙设备蓝牙设备、浮点x、浮点y、浮点z){
collectedData.put(“onGyroscopeValueChangedEvent_x”,x+);
collectedData.put(“onGyroscopeValueChangedEvent_y”,y+);
collectedData.put(“onGyroscopeValueChangedEvent_z”,z+);
//向关贸总协定请求rssi
mBluetoothGatt.readRemoteRssi();
}
现在,以异步方式,您将在
mBluetoothGatt
内接收回调:

@覆盖
公共无效onReadRemoteRssi(蓝牙gatt gatt、int rssi、int状态){
//做点什么
}