如何使用Android Beacon Library在监控模式下从Eddystone Beacon获取网址?

时间:2016-07-17 12:11:25

标签: android ibeacon-android altbeacon android-ibeacon

我已经看到一些示例如何通过范围获取Eddystone信标的URL帧,但不是通过监视

beaconManager.setRangeNotifier(new RangeNotifier() {
    @Override
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
        for (org.altbeacon.beacon.Beacon beacon: beacons) {
            if (beacon.getServiceUuid() == 0xfeaa && beacon.getBeaconTypeCode() == 0x10) {
                // This is a Eddystone-URL frame
                String url = UrlBeaconUrlCompressor.uncompress(beacon.getId1().toByteArray());
                Log.d("Eddystone", "I see a beacon transmitting a url: " + url +
                        " approximately " + beacon.getDistance() + " meters away.");
            }
        }
    }
});
didRangeBeaconsInRegion

有一个 org.altbeacon.beacon.Beacon 参数。但是为了监控 didEnterRegion ,只有区域作为参数。

 @Override
 public void didEnterRegion(Region region) {

 }

那么,如何在监控模式下获取eddysone信标的网址?有可能吗?

1 个答案:

答案 0 :(得分:1)

您必须使用范围API来读取实际标识符。虽然可以使用监视来检测Eddystone-URL信标传输,但因为该帧只有一个标识符(URL),您必须根据事先了解URL标识符(不是非常有用)进行监控,或监控所有标识符。

在后一种情况下,这会产生读取标识符的问题,因为监视回调只有您描述的区域对象。

解决方案是在监控的同时调整范围。范围回调将为您提供检测到的信标的完整列表,并允许您访问URL。