BootstrapNotifier 接口在 IBEACON 中已被弃用,我现在可以使用什么?
What do I use now that BootstrapNotifier interface is deprecated in IBEACON?
既然 BootstrapNotifier 接口在 IBEACON 中已被弃用,我现在可以使用什么?
Ibeacon deprecated : 1) RegionBootstrap 2) BootstrapNotifier 3)
BackgroundPowerSaver
是否有替代解决方案或参考资料link?
我分享了我的完整代码
import android.annotation.SuppressLint
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationCompat
import org.altbeacon.beacon.BeaconManager
import org.altbeacon.beacon.Region
import org.altbeacon.beacon.powersave.BackgroundPowerSaver
import org.altbeacon.beacon.startup.BootstrapNotifier
import org.altbeacon.beacon.startup.RegionBootstrap
class MainActivity2 : AppCompatActivity(), BootstrapNotifier {
private var regionBootstrap: RegionBootstrap? = null
private var backgroundPowerSaver: BackgroundPowerSaver? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// showNotification(this,"found beacon init")
//enable beacon features///////////////////////////////////////////////////////////////////////
val beaconManager: BeaconManager = BeaconManager.getInstanceForApplication(this)
beaconManager.beaconParsers.clear()
beaconManager.beaconParsers
.add(org.altbeacon.beacon.BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"))
beaconManager.setEnableScheduledScanJobs(false) // disable JobScheduler-based scans (used on Android 8+)
beaconManager.backgroundBetweenScanPeriod = 0 // set the time between each scan to be 1 hour (3600 seconds)
beaconManager.backgroundScanPeriod = 1100 // set the duration of the scan to be 1.1 seconds
val region = Region("backgroundRegion", null, null, null)
regionBootstrap = RegionBootstrap(this, region) // wake up the app when a beacon is seen
backgroundPowerSaver = BackgroundPowerSaver(this) //This reduces bluetooth power usage by about 60%
//////////////////////////////////////////////////////////////////////////////////////////////
}
override fun didEnterRegion(arg0: Region?) {
Log.d("mybeacon", "i found a enter")
showNotification(this,"found beacon enter")
}
override fun didExitRegion(region: Region?) {
Log.d("mybeacon", "i found a exit")
showNotification(this,"found beacon exit")
}
override fun didDetermineStateForRegion(state: Int, region: Region?) {}
//............................................................
fun showNotification(context: Context, message: String?) {
}
}
实施:
implementation 'org.altbeacon:android-beacon-library:2.19.3'
库版本 2.19+ 引入了 autowind APIs,使信标扫描的设置更简单、更直观并且更不容易出现配置错误。
在该库的早期版本中,RegionBootstrap
实用程序 class 处理应用程序在信标检测时的自动启动,但从 2.19 开始,它不再是必需的——您只需使用 startMonitoring(region)
开始监控。库示例代码显示了如何启动 code samples
的自动启动部分的示例
要在后台启动信标扫描,只需将 regionBootstrap = RegionBootstrap(this, region)
替换为:
beaconManager.addMonitorNotifier(this)
beaconManager.startMonitoring(region)
您的 class 应该实现 MonitorNotifier
.
而不是 BootstrapNotifier
接口
虽然它与 2.19 中的自动绑定 API 更改无关,但请注意,如果您希望库在检测到信标时自动启动您的应用程序,则必须在 onCreate
自定义 Android 应用程序 class 的方法,而不是问题中所示的 Activity 方法。如果您不关心自动启动,那么在 Activity class 中执行此操作就可以了。
既然 BootstrapNotifier 接口在 IBEACON 中已被弃用,我现在可以使用什么?
Ibeacon deprecated : 1) RegionBootstrap 2) BootstrapNotifier 3) BackgroundPowerSaver
是否有替代解决方案或参考资料link? 我分享了我的完整代码
import android.annotation.SuppressLint
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationCompat
import org.altbeacon.beacon.BeaconManager
import org.altbeacon.beacon.Region
import org.altbeacon.beacon.powersave.BackgroundPowerSaver
import org.altbeacon.beacon.startup.BootstrapNotifier
import org.altbeacon.beacon.startup.RegionBootstrap
class MainActivity2 : AppCompatActivity(), BootstrapNotifier {
private var regionBootstrap: RegionBootstrap? = null
private var backgroundPowerSaver: BackgroundPowerSaver? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// showNotification(this,"found beacon init")
//enable beacon features///////////////////////////////////////////////////////////////////////
val beaconManager: BeaconManager = BeaconManager.getInstanceForApplication(this)
beaconManager.beaconParsers.clear()
beaconManager.beaconParsers
.add(org.altbeacon.beacon.BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"))
beaconManager.setEnableScheduledScanJobs(false) // disable JobScheduler-based scans (used on Android 8+)
beaconManager.backgroundBetweenScanPeriod = 0 // set the time between each scan to be 1 hour (3600 seconds)
beaconManager.backgroundScanPeriod = 1100 // set the duration of the scan to be 1.1 seconds
val region = Region("backgroundRegion", null, null, null)
regionBootstrap = RegionBootstrap(this, region) // wake up the app when a beacon is seen
backgroundPowerSaver = BackgroundPowerSaver(this) //This reduces bluetooth power usage by about 60%
//////////////////////////////////////////////////////////////////////////////////////////////
}
override fun didEnterRegion(arg0: Region?) {
Log.d("mybeacon", "i found a enter")
showNotification(this,"found beacon enter")
}
override fun didExitRegion(region: Region?) {
Log.d("mybeacon", "i found a exit")
showNotification(this,"found beacon exit")
}
override fun didDetermineStateForRegion(state: Int, region: Region?) {}
//............................................................
fun showNotification(context: Context, message: String?) {
}
}
实施:
implementation 'org.altbeacon:android-beacon-library:2.19.3'
库版本 2.19+ 引入了 autowind APIs,使信标扫描的设置更简单、更直观并且更不容易出现配置错误。
在该库的早期版本中,RegionBootstrap
实用程序 class 处理应用程序在信标检测时的自动启动,但从 2.19 开始,它不再是必需的——您只需使用 startMonitoring(region)
开始监控。库示例代码显示了如何启动 code samples
要在后台启动信标扫描,只需将 regionBootstrap = RegionBootstrap(this, region)
替换为:
beaconManager.addMonitorNotifier(this)
beaconManager.startMonitoring(region)
您的 class 应该实现 MonitorNotifier
.
BootstrapNotifier
接口
虽然它与 2.19 中的自动绑定 API 更改无关,但请注意,如果您希望库在检测到信标时自动启动您的应用程序,则必须在 onCreate
自定义 Android 应用程序 class 的方法,而不是问题中所示的 Activity 方法。如果您不关心自动启动,那么在 Activity class 中执行此操作就可以了。