AtlBeacons' BeaconManager.startMonitoring(Region) 替换当前监控区域

AtlBeacons' BeaconManager.startMonitoring(Region) replaces the current monitored region

BeaconManager.monitoredRegions 显示只有一个区域被监控,当 BeaconManager.startMonitoring() 被调用两次时:

beaconManager.startMonitoring(regionA)
Log.d(TAG, "Started observing beacon: ${entity.a}")
beaconManager.startMonitoring(regionB)
Log.d(TAG, "Started observing beacon: ${entity.b}")
 
Log.i(TAG, "Monitoring regions: ${beaconManager.monitoredRegions}")

以上代码产生以下日志:

2021-11-17 14:25:10.804 3918-3918/com.dyson.n620f D/BeaconRepository: Started observing beacon: 58857b49-3560-4152-ad6d-779ec1137f66
2021-11-17 14:25:10.833 3918-3918/com.dyson.n620f D/BeaconRepository: Started observing beacon: 9e3464fd-33e8-45b7-85c2-73d8e159dcd3
2021-11-17 14:25:10.833 3918-3918/com.dyson.n620f I/BeaconRepository: Monitoring regions: [id1: 9e3464fd-33e8-45b7-85c2-73d8e159dcd3 id2: null id3: null]

如果beaconManager.startMonitoring(regionA)beaconManager.startMonitoring(regionB)互换,则给出以下日志:

2021-11-17 14:29:40.211 4291-4291/com.dyson.n620f D/BeaconRepository: Started observing beacon: 9e3464fd-33e8-45b7-85c2-73d8e159dcd3
2021-11-17 14:29:40.232 4291-4291/com.dyson.n620f D/BeaconRepository: Started observing beacon: 58857b49-3560-4152-ad6d-779ec1137f66
2021-11-17 14:29:40.232 4291-4291/com.dyson.n620f I/BeaconRepository: Monitoring regions: [id1: 58857b49-3560-4152-ad6d-779ec1137f66 id2: null id3: null]

有谁知道为什么会这样,或者我误解了什么?预先感谢您的帮助!

您没有显示 Region 对象的定义,但我怀疑它们可能看起来像这样:

val regionA = Region("my region", "9e3464fd-33e8-45b7-85c2-73d8e159dcd3", null, null)
val regionB = Region("my region", "58857b49-3560-4152-ad6d-779ec1137f66", null, null)

在上面的示例中,构造函数的第一个参数是调用API时用于标识区域的唯一ID。 对于您定义的每个区域,此唯一 ID 必须不同,如果不是,调用开始监视 regionA 后跟 regionB 将告诉库 replace regionA 和 regionB.

如果您想同时监控两个区域,只需确保第一个参数是唯一的,如下所示:

val regionA = Region("my region A", "9e3464fd-33e8-45b7-85c2-73d8e159dcd3", null, null)
val regionB = Region("my region B", "58857b49-3560-4152-ad6d-779ec1137f66", null, null)