mirror of
https://github.com/dzeiocom/OpenHealth.git
synced 2025-04-30 14:52:15 +00:00
69 lines
2.4 KiB
Kotlin
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()
|
|
}
|
|
} |