大佬教程收集整理的这篇文章主要介绍了Android altbeacon在后台运行时间隔不等 ,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用计时器启动Foregroundservice,以每分钟10秒的间隔(范围为200毫秒)启动信标,并计算最强的信标并将其提交给后端API.
只要应用程序处于前台状态,并且在屏幕关闭时,只要我使用adb logcat进行连接,它就可以正常工作.一旦我将其取下,就不再有任何内容提交到服务器,这意味着不再有任何信标被调整.
以下是相关的@L_616_5@段,希望我不要简化太多:
class Beaconservice : service(),BeaconConsumer {
private var beaconManager: BeaconManager? = null
private var rangingTimer = Timer("rangingTimer",truE)
private val region = Region("com.beacon.test",Identifier.parse("f7826da6-4fa2-4e98-8024-bc5b71e0893e"),null,null)
override fun onStartCommand(intent: Intent?,flags: Int,startId: int): Int {
return service.START_STICKY
}
override fun onCreate() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODEs.O) {
val notificationmanager = Mynotificationmanager.geTinstance()
val notification = notificationmanager.buildBeaconserviceNotification(this,"iBeacon service",null)
startForeground(NOTIFICATION_ID,notification)
}
initBeaconManager()
}
private fun initBeaconManager() {
BeaconManager.setDebug(true)
beaconManager = BeaconManager.geTinstanceForApplication(this)
beaconManager?.foregroundScanPeriod = 200L
beaconManager?.beaconParsers?.add(BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"))
beaconManager?.bind(this)
}
override fun onBeaconserviceConnect() {
beaconManager?.addRangeNotifier { beacons,_ ->
if (beacons.isnotEmpty()) {
//code add ranged beacons to list
}
}
startRanging()
}
private fun startRanging() {
//code to reset the list of ranged beacons
beaconManager?.startRangingBeaconsInRegion(region)
rangingTimer.schedule(10000L) {
stopRanging(50000L)
}
}
private fun stopRanging(restartRangingAfter: Long? = null) {
beaconManager?.stopRangingBeaconsInRegion(region)
//code calcuate the strongest beacon and submit to server
if (restartRangingAfter != null) {
rangingTimer.schedule(restartRangingAfter) {
startRanging()
}
}
}
}
拥有自己的前台服务并不重要. Android仍会对在该前台服务之外执行的任何后台处理实施这些限制.
两种选择:
>不受工作限制(每15分钟扫描一次).使用BACkgroundPowerSaver在前景/背景模式之间自动切换,并设置beaconManager.setBACkgroundScanPeriod(5000)(每15分钟扫描5秒.)为清楚起见,还应设置beaconManager.setBACkgroundbetweenScanPeriod(15 * 60 * 1000)(15分钟),尽管您可以设置一个较低的值,但Android 8上的操作系统将不允许这样做.
>设置库以使用其自己的前台服务(是作为第二个前台服务)进行扫描,如here所述.然后,您可以停止使用自己的前台服务,也可以保留它.如果保留它,您将看到有关两个正在运行的前台服务的两个通知图标.如果要保留两个前台服务并仅显示一个通知,则可以选择combine those two notifications.
以上是大佬教程为你收集整理的Android altbeacon在后台运行时间隔不等 全部内容,希望文章能够帮你解决Android altbeacon在后台运行时间隔不等 所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。