feat(system): add notification manager system service for DND
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.nsh07.pomodoro.data
|
package org.nsh07.pomodoro.data
|
||||||
|
|
||||||
|
import android.app.NotificationManager
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
@@ -34,6 +35,7 @@ interface AppContainer {
|
|||||||
val appStatRepository: AppStatRepository
|
val appStatRepository: AppStatRepository
|
||||||
val appTimerRepository: AppTimerRepository
|
val appTimerRepository: AppTimerRepository
|
||||||
val notificationManager: NotificationManagerCompat
|
val notificationManager: NotificationManagerCompat
|
||||||
|
val notificationManagerService: NotificationManager
|
||||||
val notificationBuilder: NotificationCompat.Builder
|
val notificationBuilder: NotificationCompat.Builder
|
||||||
val timerState: MutableStateFlow<TimerState>
|
val timerState: MutableStateFlow<TimerState>
|
||||||
val time: MutableStateFlow<Long>
|
val time: MutableStateFlow<Long>
|
||||||
@@ -56,6 +58,9 @@ class DefaultAppContainer(context: Context) : AppContainer {
|
|||||||
NotificationManagerCompat.from(context)
|
NotificationManagerCompat.from(context)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val notificationManagerService: NotificationManager =
|
||||||
|
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
|
||||||
override val notificationBuilder: NotificationCompat.Builder by lazy {
|
override val notificationBuilder: NotificationCompat.Builder by lazy {
|
||||||
NotificationCompat.Builder(context, "timer")
|
NotificationCompat.Builder(context, "timer")
|
||||||
.setSmallIcon(R.drawable.tomato_logo_notification)
|
.setSmallIcon(R.drawable.tomato_logo_notification)
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import android.os.Vibrator
|
|||||||
import android.os.VibratorManager
|
import android.os.VibratorManager
|
||||||
import androidx.compose.ui.graphics.toArgb
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
@@ -53,7 +52,8 @@ class TimerService : Service() {
|
|||||||
|
|
||||||
private val timerRepository by lazy { appContainer.appTimerRepository }
|
private val timerRepository by lazy { appContainer.appTimerRepository }
|
||||||
private val statRepository by lazy { appContainer.appStatRepository }
|
private val statRepository by lazy { appContainer.appStatRepository }
|
||||||
private val notificationManager by lazy { NotificationManagerCompat.from(this) }
|
private val notificationManager by lazy { appContainer.notificationManager }
|
||||||
|
private val notificationManagerService by lazy { appContainer.notificationManagerService }
|
||||||
private val notificationBuilder by lazy { appContainer.notificationBuilder }
|
private val notificationBuilder by lazy { appContainer.notificationBuilder }
|
||||||
private val _timerState by lazy { appContainer.timerState }
|
private val _timerState by lazy { appContainer.timerState }
|
||||||
private val _time by lazy { appContainer.time }
|
private val _time by lazy { appContainer.time }
|
||||||
|
|||||||
Reference in New Issue
Block a user