2015-11-26 42 views

回答

2

是的,可以使用该库检测非信标BLE设备。如果您首先测量设备一米的已知rssi,则还可以计算到设备的估计距离。

下面的代码演示了如何做到这一点:

final DistanceCalculator distanceCalculator = new ModelSpecificDistanceCalculator(this, null); 
    final int rssiAtOneMeter = -59; 

    mBeaconManager.setNonBeaconLeScanCallback(new NonBeaconLeScanCallback() { 
     @Override 
     public void onNonBeaconLeScan(BluetoothDevice bluetoothDevice, int rssi, byte[] bytes) { 
      Double estimatedDistnaceInMeters = distanceCalculator.calculateDistance(rssiAtOneMeter, rssi); 
      // TODO: do something with estimatedDistanceInMeters 
     } 
    }); 
+0

谢谢,我看到setNonBeaconLeScanCallback在最新的版本中添加。 – Droider

+0

非常好的功能。然而,虽然非信标BLE设备仍在广告,并且beaconManager仍然获得来自信标设备的回叫,但回调仅被触发一次。 beaconManager安装有任何技巧吗? (例如在iOS上,我们可以告诉我们每个设备只需要发现一次还是每次扫描都会收到通知......在这种情况下是否会发生这样的规则?) – JBA

+0

更多信息:我刚刚在上面描述的问题发生在三星S4 mini与Android 4.4.2。在Android 7.1.2的Nexus 5x上,回调按预期工作(多次通知存在)。 关于Android 7具有哪些/ 4.4的功能没有...? – JBA