С помощью этой ссылки я могу отображать уведомление, когда мое устройство входит в радиус действия маяка.Я также хочу отображать уведомление, когда устройство выходит за пределы диапазона маяка.Где я должен упомянуть это?
Это мой код
override fun didRangeBeaconsInRegion(p0: MutableCollection<Beacon>?, p1: Region?) {
for (beacon in p0!!) {
if (beacon.getServiceUuid() == 0xfeaa && beacon.getBeaconTypeCode() == 0x00) {
// This is a Eddystone-UID frame
val namespaceId = beacon.getId1()
val instanceId = beacon.getId2()
Log.d("RangingActivity", "I see a beacon transmitting namespace id: " + namespaceId +
" and instance id: " + instanceId +
" approximately " + beacon.getDistance() + " meters away.")
runOnUiThread {
showNotification("Entry", "Hello world")
}
}
}
}
@TargetApi(Build.VERSION_CODES.O)
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
fun showNotification(title: String, message: String) {
val notifyIntent = Intent(this, MainActivity::class.java)
notifyIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
val pendingIntent: PendingIntent = PendingIntent.getActivities(
this,
0,
arrayOf(notifyIntent),
PendingIntent.FLAG_UPDATE_CURRENT
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val mChannel = NotificationChannel("1", "Notify Channel", NotificationManager.IMPORTANCE_HIGH)
val notification = NotificationCompat.Builder(this, "1")
.setSmallIcon(R.drawable.ic_location_arrow)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setChannelId("1")
.build()
notification.defaults = notification.defaults or Notification.DEFAULT_SOUND
val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)
notificationManager.notify(1, notification)
startForegroundService(notifyIntent)
} else {
val notification = NotificationCompat.Builder(this, "1")
.setSmallIcon(R.drawable.ic_location_arrow)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setChannelId("1")
.build()
notification.defaults = notification.defaults or Notification.DEFAULT_SOUND
val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(1, notification)
}
}
Кроме того, я постоянно получаю уведомления, когда я нахожусь в зоне действия маяка.Как только я попаду в диапазон, я хочу, чтобы мое уведомление отображалось только один раз.