Android 中的 Altbeacon 扫描器特定 UUID

Altbeacon scanner specific UUID in Android

如果我需要监控特定区域的UUID。

在区域中声明,但是当进入 didEnterRegion 时,我只得到 UUID 和 Major 和 Minor 为 null,我是否需要做 didRangeBeaconsInRegion 来找到定义的区域而不找到另一个不需要的区域?

我定义区域如下:

Region region = new Region ("region", Identifier.parse ("UUID"), null, null);

另一个问题,图书馆是否按位置查找信标?

非常感谢, 此致

public void onBeaconServiceConnect() {

    beaconManager.addMonitorNotifier(new MonitorNotifier() {
    @Override
    public void didEnterRegion(Region region) {
        Log.i(TAG, " enter region");
        try {
            beaconManager.startRangingBeaconsInRegion(region);
            Log.i(TAG, "region beacon" + region.getId1() + " " + region.getId2() + " " + region.getId3());
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void didExitRegion(Region region) {
        Log.i(TAG, "I no longer see an beacon");
        try {
            beaconManager.stopRangingBeaconsInRegion(region);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void didDetermineStateForRegion(int state, Region region) {
        Log.i(TAG, "I have just switched from seeing/not seeing beacons: "+ state);
    }

});

try {
      beaconManager.startMonitoringBeaconsInRegion(new 
Region("myMonitoringUniqueId", Identifier.parse("UUID"), null, null));
    } catch (RemoteException e) {

   }
}

didEnterRegion 回调不会告诉您哪个特定信标符合您的区域定义。它 returns 您调用 startMonitoringBeaconsInRegion 时使用的 Region 对象的副本。如果您想获取匹配信标的特定标识符,请使用 startRangingBeaconsInRegion(...) 并等待回调 didRangeBeaconsInRegion(...),其中将包含所有匹配信标的列表。

API 以这种方式工作的原因有很多,但最根本的是因为 API 是在 iOS 上的等效 CoreLocation APIs 之后建模的互操作性,它们的工作方式相同。