@@ -12,7 +12,6 @@ import android.content.Context
1212import android.content.Intent
1313import android.graphics.drawable.Icon
1414import android.os.Build
15- import androidx.annotation.RequiresApi
1615import com.d4rk.musicsleeptimer.plus.R
1716import com.d4rk.musicsleeptimer.plus.notifications.SleepNotification.Action.CANCEL
1817import com.d4rk.musicsleeptimer.plus.notifications.SleepNotification.Action.DECREMENT
@@ -26,7 +25,6 @@ import java.util.Date
2625import java.util.concurrent.TimeUnit.MILLISECONDS
2726import java.util.concurrent.TimeUnit.MINUTES
2827
29- @RequiresApi(Build .VERSION_CODES .O )
3028object SleepNotification {
3129 private val TIMEOUT_INITIAL_MILLIS : Long = MINUTES .toMillis(30 )
3230 private val TIMEOUT_INCREMENT_MILLIS : Long = MINUTES .toMillis(10 )
@@ -86,23 +84,52 @@ object SleepNotification {
8684 private fun Context.show (timeout : Long = TIMEOUT_INITIAL_MILLIS ) {
8785 require(timeout > 0 )
8886 val eta : Long = currentTimeMillis() + timeout
89- val notification : Notification =
90- Notification .Builder (this , getString(R .string.notification_channel_id)).setCategory(CATEGORY_EVENT ).setVisibility(VISIBILITY_PUBLIC ).setOnlyAlertOnce(true ).setOngoing(true ).setSmallIcon(R .drawable.ic_music_off).setSubText(DateFormat .getTimeInstance(SHORT ).format(Date (eta)))
91- .setShowWhen(true ).setWhen(eta).setUsesChronometer(true ).setChronometerCountDown(true ).setTimeoutAfter(timeout).setDeleteIntent(SleepAudioWorker .pendingIntent(this )) // FIXME: Unresolved reference: pendingIntent
92- .addAction(INCREMENT .action(this ).build()).addAction(
93- DECREMENT .action(this , cancel = timeout <= TIMEOUT_DECREMENT_MILLIS ).build()
94- ).addAction(CANCEL .action(this ).build()).build()
95- createNotificationChannel()
96- notificationManager()?.notify(R .id.notification_id , notification)
87+ val builder : Notification .Builder = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
88+ Notification .Builder (this , getString(R .string.notification_channel_id))
89+ } else {
90+ @Suppress(" DEPRECATION" )
91+ Notification .Builder (this )
92+ }
93+
94+ val notification : Notification = builder
95+ .setCategory(CATEGORY_EVENT )
96+ .setVisibility(VISIBILITY_PUBLIC )
97+ .setOnlyAlertOnce(true )
98+ .setOngoing(true )
99+ .setSmallIcon(R .drawable.ic_music_off)
100+ .setSubText(DateFormat .getTimeInstance(SHORT ).format(Date (eta)))
101+ .setShowWhen(true )
102+ .setWhen(eta)
103+ .setUsesChronometer(true )
104+ .setChronometerCountDown(true )
105+ .setTimeoutAfter(timeout)
106+ .apply {
107+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
108+ setDeleteIntent(SleepAudioWorker .pendingIntent(this @show))
109+ }
110+ }
111+ .addAction(INCREMENT .action(this ).build())
112+ .addAction(
113+ DECREMENT .action(this , cancel = timeout <= TIMEOUT_DECREMENT_MILLIS ).build()
114+ )
115+ .addAction(CANCEL .action(this ).build())
116+ .build()
117+
118+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
119+ createNotificationChannel()
120+ }
121+ notificationManager()?.notify(R .id.notification_id, notification)
97122 }
98123
99124 private fun Context.createNotificationChannel () {
100- val id : String = getString(R .string.notification_channel_id)
101- val name : CharSequence = getString(R .string.app_name)
102- val channel : NotificationChannel = NotificationChannel (id , name , IMPORTANCE_LOW ).apply {
103- setBypassDnd(true )
104- lockscreenVisibility = VISIBILITY_PUBLIC
125+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
126+ val id : String = getString(R .string.notification_channel_id)
127+ val name : CharSequence = getString(R .string.app_name)
128+ val channel : NotificationChannel = NotificationChannel (id, name, IMPORTANCE_LOW ).apply {
129+ setBypassDnd(true )
130+ lockscreenVisibility = VISIBILITY_PUBLIC
131+ }
132+ notificationManager()?.createNotificationChannel(channel)
105133 }
106- notificationManager()?.createNotificationChannel(channel)
107134 }
108135}
0 commit comments