#android #kotlin #bluetooth #ibeacon #altbeacon
Вопрос:
Мы работаем над сканированием маяка в фоновом режиме. Для этого я использовал библиотеку AltBeacon для фонового сканирования. Фоновое сканирование работает абсолютно нормально, но когда я убиваю приложение, появляется ошибка ниже:
Трассировка стека:
FATAL EXCEPTION: main
Process: com.demobeacon.android, PID: 24256
java.lang.RuntimeException: Unable to create application com.demobeacon.DemoBeaconApplication: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.demobeacon.android/org.altbeacon.beacon.service.BeaconService }: app is in background uid UidRecord{1b57628 u0a606 TRNB idle procs:1 seq(0,0,0)}
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5829)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1685)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.demobeacon.android/org.altbeacon.beacon.service.BeaconService }: app is in background uid UidRecord{1b57628 u0a606 TRNB idle procs:1 seq(0,0,0)}
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1531)
at android.app.ContextImpl.startService(ContextImpl.java:1487)
at android.content.ContextWrapper.startService(ContextWrapper.java:660)
at org.altbeacon.beacon.startup.RegionBootstrap$InternalBeaconConsumer.bindService(RegionBootstrap.java:228)
at org.altbeacon.beacon.BeaconManager.bind(BeaconManager.java:477)
at org.altbeacon.beacon.startup.RegionBootstrap.<init>(RegionBootstrap.java:114)
at com.demobeacon.DemoBeaconApplication.onCreate(DemoBeaconApplication.kt:170)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1120)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5826)
Для получения дополнительной информации ознакомьтесь с приведенными ниже фрагментами кода:
beaconManager = BeaconManager.getInstanceForApplication(this)
beaconManager?.backgroundMode = true
beaconManager?.disableForegroundServiceScanning()
beaconManager?.setEnableScheduledScanJobs(false)
beaconManager?.backgroundBetweenScanPeriod = 0
beaconManager?.backgroundScanPeriod = 1100
beaconManager?.beaconParsers?.add( BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"))
BluetoothMedic.getInstance().setNotificationsEnabled( true, org.altbeacon.beacon.R.drawable.notification_icon_background )
BluetoothMedic.getInstance().enablePowerCycleOnFailures(this)
BluetoothMedic.getInstance().enablePeriodicTests(this, BluetoothMedic.SCAN_TEST BluetoothMedic.TRANSMIT_TEST)
region = Region("wildcard-region", null, null, null)
regionBootstrap = RegionBootstrap(this, region)
BackgroundPowerSaver(this)
Как справиться с этой ошибкой? Заранее большое вам спасибо !
Комментарии:
1. github.com/AltBeacon/android-beacon-library/pull/1030
2. @CommonsWare Спасибо, я проверю .
3. @CommonsWare не работает в фоновом режиме.
4. Затем создайте воспроизводимый проект, демонстрирующий проблему, и отправьте отчет об ошибке разработчикам библиотеки.