Android + Estimote Beacons:获得最接近的信标

时间:2017-06-20 18:55:18

标签: android bluetooth-lowenergy estimote

我正在制作一款使用BLE Beacons的应用程序。我们正在使用Estimote信标及其框架。我跟着this tutorial在我的应用程序中添加检测。

检测成功,我可以使用以下代码获取信标列表:

this.beaconManager = new BeaconManager(this);
this.beaconManager.setRangingListener(new BeaconManager.BeaconRangingListener() {
    @Override
    public void onBeaconsDiscovered(BeaconRegion beaconRegion, List<Beacon> list) {

        if (!list.isEmpty()) {
            MainActivity.this.updateClosestBeacon(list);
        }
        else {
            txtClosest.setText("No beacons detected");
        }
    }
});

this.beaconRegion = new BeaconRegion("monitored region",
        UUID.fromString("B9407F30-F5F8-466E-AFF9-25556B57FE6D"),
        null, null);


beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
    @Override
    public void onServiceReady() {
        beaconManager.startRanging(beaconRegion);
    }
});

updateClosestBeacon函数使用以下两个函数获取信标:

private static Comparator<Beacon> COMPARATOR = new Comparator<Beacon>()
{
    // This is where the sorting happens.
    public int compare(Beacon o1, Beacon o2)
    {
    return o2.getRssi() - o1.getRssi();
    }
};


public Beacon getClosestBeacon(List<Beacon> list){

    if(list.isEmpty())
        return null;

    Collections.sort(list, COMPARATOR);

    return list.get(0);
}

我按rssi订购信标列表然后获取第一个。这不能正常工作。我查看了estimote论坛的答案,在那里我找不到它,只是链接到显示信标检测的视频。

您是否有一些代码可以帮助我处理信标列表并获得最接近的信号?

感谢您的帮助

0 个答案:

没有答案