1
0
mirror of https://github.com/dzeiocom/OpenHealth.git synced 2025-04-30 14:52:15 +00:00
OpenHealth/app/src/main/java/com/dzeio/openhealth/services/WaterReminderService.kt
2021-12-23 16:47:30 +01:00

69 lines
2.4 KiB
Kotlin

package com.dzeio.openhealth.services
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkerParameters
import com.dzeio.openhealth.Application
import com.dzeio.openhealth.MainActivity
import com.dzeio.openhealth.R
import com.dzeio.openhealth.core.BaseService
import com.dzeio.openhealth.interfaces.NotificationChannels
import com.dzeio.openhealth.interfaces.NotificationIds
import java.util.*
import java.util.concurrent.TimeUnit
class WaterReminderService(
private val context: Context,
params: WorkerParameters
) : BaseService(context, params) {
companion object {
const val TAG = "${Application.TAG}/WaterService"
fun setup(context: Context) {
schedule(
TAG,
PeriodicWorkRequestBuilder<WaterReminderService>(1, TimeUnit.HOURS)
.addTag(TAG)
.build(),
context
)
}
}
@SuppressLint("UnspecifiedImmutableFlag")
override fun doWork(): Result {
Log.d(TAG, "Ran! ${Date().toLocaleString()}")
with(NotificationManagerCompat.from(context)) {
val flag =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
val builder =
NotificationCompat.Builder(context, NotificationChannels.DEFAULT.channelName)
.setContentTitle("Did you drink?")
.setContentText("Drink now! ${Date().toLocaleString()}")
.setSmallIcon(R.drawable.ic_logo_small)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(
PendingIntent.getActivity(
context,
0,
Intent(context, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
},
flag
)
).build()
notify(
NotificationIds.WaterIntake.ordinal,
builder
)
}
return Result.success()
}
}