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(,)
请注意,在现实中,蓝牙扫描可能不像上面的示例那样响应迅速