Я уже это сделал удалось отслеживать и ранжировать регионы iBeacon с помощью служб переднего плана, и все работает. Теперь я хочу попробовать сканирование на основе намерений для обнаружения маяков, но, видимо, мне чего-то не хватает, чтобы это сработало. Я пытался настроить сканирование на основе намерений с помощью доступного эталонного приложения Kotlin, но, похоже, не до конца понял, как работает сканирование на основе намерений.
Ниже я сообщаю о полезной части моего код:
Код: Выделить всё
override fun onCreate() {
super.onCreate()
val beaconManager = BeaconManager.getInstanceForApplication(this)
BeaconManager.setDebug(true)
val parser = BeaconParser().
setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")
parser.setHardwareAssistManufacturerCodes(arrayOf(0x004c).toIntArray())
beaconManager.getBeaconParsers().add(
parser)
setupBeaconScanning()
}
fun setupBeaconScanning() {
val beaconManager = BeaconManager.getInstanceForApplication(this)
// Enable intent-based scans
beaconManager.setIntentScanningStrategyEnabled(true)
beaconManager.startMonitoring(region)
val regionViewModel = BeaconManager.getInstanceForApplication(this).getRegionViewModel(region)
regionViewModel.regionState.observeForever(centralMonitoringObserver)
}
val centralMonitoringObserver = Observer { state ->
if (state == MonitorNotifier.OUTSIDE) {
Log.d(TAG, "outside beacon region: " + region)
}
else {
Log.d(TAG, "inside beacon region: " + region)
sendNotification()
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... on-library
Мобильная версия