diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b667fe6..e900403 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,12 +14,14 @@ ~ limitations under the License. --> - + + = Build.VERSION_CODES.O) { - startForegroundService(it) - } else { - startService(it) - } + with(playerServiceIntent()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(this) + } else { + startService(this) } + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + requestPermissions(arrayOf(android.Manifest.permission.POST_NOTIFICATIONS), 0) + } setContent { SleepApp() } } + + override fun onDestroy() { + super.onDestroy() + + stopService(playerServiceIntent()) + } + } \ No newline at end of file diff --git a/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationManager.kt b/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationManager.kt index c594a2e..161b07d 100644 --- a/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationManager.kt +++ b/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationManager.kt @@ -42,7 +42,6 @@ class PlayerNotificationManager @Inject constructor( companion object { const val CHANNEL_ID = "Player_Notification_Channel_ID" - const val NOTIFICATION_ID = 93 } @@ -60,7 +59,7 @@ class PlayerNotificationManager @Inject constructor( context, 0, Intent(context, PlayerNotificationService::class.java).setAction(action.key), - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0 + PendingIntent.FLAG_IMMUTABLE ) init { diff --git a/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationService.kt b/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationService.kt index c60de1d..793fc2a 100644 --- a/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationService.kt +++ b/app/src/main/java/dev/marcocattaneo/sleep/ui/notification/PlayerNotificationService.kt @@ -17,6 +17,7 @@ package dev.marcocattaneo.sleep.ui.notification import android.app.Service +import android.content.Context import android.content.Intent import android.os.IBinder import dagger.hilt.android.AndroidEntryPoint @@ -97,4 +98,10 @@ class PlayerNotificationService : Service() { job.cancel() } -} \ No newline at end of file +} + +/** + * Helper method to start the [PlayerNotificationService] + * @receiver Context + */ +fun Context.playerServiceIntent() = Intent(this, PlayerNotificationService::class.java) \ No newline at end of file