class AlarmReceiver : Service() {
override fun onCreate() {
super.onCreate()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val context = baseContext.applicationContext
Log.e("service", intent?.getStringExtra(KEY_ID).toString())
if (context != null && intent != null) {
val i = Intent(context, AlarmRingtoneManager::
class.java)
val v = Intent(context, VibrateService::
class.java)
if (intent.getStringExtra(KEY_ID).toString() != "StopService") {
val objectAlarmId = intent.getStringExtra(KEY_ID).toString()
val hours = intent.getIntExtra(KEY_HOURS, 0)
val minutes = intent.getIntExtra(KEY_MINUTES, 0)
val vibrate = intent.getBooleanExtra(KEY_VIBRATE, false)
if (vibrate) {
context.startService(v)
}
context.startService(i)
val extras = intent.extras
extras?.putString(KEY_ID, objectAlarmId)
val notifManager =
getSystemService(NOTIFICATION_SERVICE) as NotificationManager
val pendingIntent = NavDeepLinkBuilder(context)
.setComponentName(MainActivity::
class.java)
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.alarmRingingFragment)
.setArguments(extras)
.createPendingIntent()
val channel = NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT
)
notifManager.createNotificationChannel(channel)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notification =
Notification.Builder(context, NOTIFICATION_CHANNEL_ID)
.setContentTitle("Будильник")
.setContentText("${hours.getTimeStringFormatter()}:${minutes.getTimeStringFormatter()}")
.setSmallIcon(R.drawable.alarm)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.build()
startForeground(1, notification)
val intentAlarm = Intent(context, AlarmRingingFragment::
class.java)
intentAlarm.putExtra(KEY_HOURS, hours)
intentAlarm.putExtra(KEY_MINUTES, minutes)
}
} else if (intent.getStringExtra(KEY_ID).toString() == "StopService") {
context.stopService(v)
context.stopService(i)
Log.e("service", "stop")
stopForeground(true)
stopSelf()
}
}
return START_REDELIVER_INTENT
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}