Android 估计信标-监视和测距侦听器之间的差异

Android 估计信标-监视和测距侦听器之间的差异,android,estimote,Android,Estimote,我似乎不太明白监听者和监听者之间的区别 在我的特定用例中,我希望不断了解范围内的所有信标,并希望知道与其中任何信标关联的区域何时退出 这是我所说的一个片段: beaconManager.setRangingListener(new BeaconManager.RangingListener() { @Override public void onBeaconsDiscovered(Region region, final List<Beacon>

我似乎不太明白监听者和监听者之间的区别

在我的特定用例中,我希望不断了解范围内的所有信标,并希望知道与其中任何信标关联的区域何时退出

这是我所说的一个片段:

    beaconManager.setRangingListener(new BeaconManager.RangingListener() {
        @Override
        public void onBeaconsDiscovered(Region region, final List<Beacon> beacons) {

        }
    });
    beaconManager.setMonitoringListener(new BeaconManager.MonitoringListener() {
        @Override
        public void onEnteredRegion(Region region, List<Beacon> beacons) {

        }

        @Override
        public void onExitedRegion(Region region) {

        }
    });
beaconManager.SetRangListener(新的beaconManager.RangListener(){
@凌驾
发现公共无效OnBeacons(区域,最终列表信标){
}
});
beaconManager.setMonitoringListener(新的beaconManager.MonitoringListener(){
@凌驾
公共区域(区域、列表信标){
}
@凌驾
公共无效onExitedRegion(区域){
}
});
我真的不明白OnBeaconsDiscovery和onEnteredRegion方法之间的区别。当你开始听它们中的任何一个时,你会把一个区域作为参数传递,这让我更加困惑,因为乍一看,我认为第一个只是在不断地搜索,而另一个只是在寻找一个特定的区域


谢谢

区别并不在于回调本身,而是在于调用方式和调用时间

MonitoringListener.onEnteredRegion
MonitoringListener.onExitedRegion
在您跨越传递给
BeaconManager.startMonitoring的区域边界时被触发。一旦您进入该区域并调用了
onEnteredRegion
,您将不会收到另一个通知,除非您退出并重新进入该区域

相反,
RangingListener.onBeaconsDiscovery
会被连续触发(默认情况下:每1秒一次),并为您获取Android设备发现的信标列表-只要它们与传递给
BeaconManager.startRanging的区域匹配即可

例子: 假设您有一个UUID=X、MARGY=Y和MARGER=Z的信标。您将区域定义如下:

Region region = new Region("myRegion", X, Y, Z)
然后开始测距和监视:

beaconManager.startRanging(region);
beaconMangeer.startMonitoring(region);
回调调用的时间线可能如下所示:

#假设您在信标范围外启动
1s:OnBeaconsDiscoverys(,)
2s:OnBeaconsDiscoverys(,)
3s:OnBeaconsDiscoverys(,)
#现在你靠近灯塔,到达它的射程
4s:*统一区域*(,)
+已发现(,)
5s:OnBeaconsDiscoverys(,)
6s:OnBeaconsDiscoverys(,)
7s:OnBeaconsDiscoverys(,)
#现在你再次离开灯塔的射程
8s:*onExitedRegion*()
+已发现(,)
9s:OnBeaconsDiscoverys(,)
10s:OnBeaconsDiscoverys(,)
请注意,在现实中,蓝牙扫描可能不像上面的示例那样响应迅速