簡體   English   中英

在Android 8之前的版本中重新啟動應用后,AltBeacon未檢測到iBeacon

[英]AltBeacon not detecting iBeacon after app restart on Android pre-8

我正在將AltBeacon與iBeacons的自定義解析器一起使用。 我有一個服務,該服務實現BootstrapNotifier並在初始化期間設置自定義解析器:

const val IBEACON_LAYOUT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"

val parser = BeaconParser().setBeaconLayout(IBEACON_LAYOUT)
BeaconManager.getInstanceForApplication(this).apply {
    beaconParsers.clear()
    beaconParsers.add(parser)
}

regionBootstrap = RegionBootstrap(this, monitoredRegions)

我添加了一個要監視的區域,如下所示:

fun addRegion(uuid: ByteArray, name: String) {
    val region = Region(name, Identifier.fromBytes(uuid, 0, 16, false), null, null)
    regionBootstrap?.addRegion(region)

    Timber.d("Monitoring region $name")
}

我對didEnterRegiondidExitRegion進行了覆蓋,並且如果應用程序位於前台或后台,則一切都可以正常工作。 如果我通過從Android的“正在運行的應用程序”屏幕中向右滑動退出應用程序,則該應用程序將重新啟動並繼續進行信標檢測-但僅適用於默認的AltBeacon類型,而不適用於iBeacons。 自定義信標設置似乎已丟失,可能是因為該設置未同步到AltBeacon服務。 我嘗試在調用addRegion時添加iBeacon解析器,但沒有成功。 對我而言唯一有效的方法是修改AltBeacon的本地副本,使其默認為iBeacon。

重新啟動應用程序后,使用自定義解析器是否成功?

問題可能是您的service.never在終止應用程序后就無法啟動,因此,當庫喚醒以使用JobScheduler進行掃描時,BeaconParser永遠不會被設置。

簡單的解決方案是在自定義Application類的onCreate方法中設置BeaconParser。 即使啟動只是基於JobScheduler的掃描,它始終在應用啟動時執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM