Ich verstehe den Unterschied zwischen dem MonitoringListener und dem RangingListener nicht wirklich.
In meinem speziellen Anwendungsfall möchte ich ständig alle Beacons innerhalb der Reichweite wissen und würde gerne wissen, wann eine Region, die mit irgendeinem von ihnen assoziiert ist, verlassen wird.
Dies ist ein Ausschnitt dessen, worüber ich spreche:
%Vor%Ich verstehe nicht wirklich den Unterschied zwischen den Methoden onBeaconsDiscovered und onEnteredRegion. Wenn du auf einen von ihnen hörst, passierst du eine Region als Parameter, was mich ein bisschen mehr verwirrt, da ich auf den ersten Blick angenommen habe, dass die erste gerade ständig nach einer bestimmten Region sucht.
Danke!
Der Unterschied liegt nicht wirklich in den Callbacks selbst, sondern darin, wie und wann sie aufgerufen werden.
MonitoringListener.onEnteredRegion
und MonitoringListener.onExitedRegion
werden immer dann ausgelöst, wenn Sie die Grenze der Region überschreiten, die an BeaconManager.startMonitoring
übergeben wurde. Sobald Sie die Region betreten und onEnteredRegion
aufgerufen wird, erhalten Sie keine weitere Benachrichtigung, es sei denn, Sie beenden und dann die Region erneut eingeben.
Im Gegensatz dazu wird RangingListener.onBeaconsDiscovered
kontinuierlich ausgelöst (standardmäßig: alle 1 Sekunde) und erhält eine Liste der Beacons, die von Ihrem Android-Gerät erkannt wurden - solange sie der Region entsprechen, die an BeaconManager.startRanging
übergeben wurde.
Stellen Sie sich vor, Sie haben einen Beacon mit UUID = X, Dur = Y und Moll = Z. Sie definieren Ihre Region wie folgt:
%Vor%Und starten Sie dann sowohl das Ranging als auch das Monitoring:
%Vor%Die Zeitleiste von Rückrufaufrufen kann wie folgt aussehen:
%Vor%Beachten Sie, dass das Bluetooth-Scannen in Wirklichkeit nicht so schnell reagiert wie im obigen Beispiel.