diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt index f4d5b713..1ab0759d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt @@ -30,6 +30,7 @@ const val DEFAULT_ALARM_MINUTES = 480 const val DEFAULT_MAX_ALARM_REMINDER_SECS = 300 const val DEFAULT_MAX_TIMER_REMINDER_SECS = 60 const val SIMPLE_PHONE = "Simple_Phone" +const val ALARM_NOTIFICATION_CHANNEL_ID = "Alarm_Channel" const val PICK_AUDIO_FILE_INTENT_ID = 9994 const val REMINDER_ACTIVITY_INTENT_ID = 9995 diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt index f7572713..a1e7b7cc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt @@ -6,14 +6,15 @@ import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.media.AudioAttributes -import android.net.Uri +import android.os.Build import android.os.Handler +import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat import com.simplemobiletools.clock.R import com.simplemobiletools.clock.activities.ReminderActivity import com.simplemobiletools.clock.extensions.* import com.simplemobiletools.clock.helpers.ALARM_ID +import com.simplemobiletools.clock.helpers.ALARM_NOTIFICATION_CHANNEL_ID import com.simplemobiletools.clock.helpers.ALARM_NOTIF_ID import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.helpers.isOreoPlus @@ -31,16 +32,13 @@ class AlarmReceiver : BroadcastReceiver() { }, context.config.alarmMaxReminderSecs * 1000L) } else { if (isOreoPlus()) { - val audioAttributes = AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_ALARM) - .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) - .build() - val notificationManager = context.getSystemService(NotificationManager::class.java) - if (notificationManager.getNotificationChannel("Alarm") == null) { - NotificationChannel("Alarm", "Alarm", NotificationManager.IMPORTANCE_HIGH).apply { + val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + if (notificationManager.getNotificationChannel(ALARM_NOTIFICATION_CHANNEL_ID) == null) { + oldNotificationChannelCleanup(notificationManager) // cleans up previous notification channel that had sound properties + NotificationChannel(ALARM_NOTIFICATION_CHANNEL_ID, "Alarm", NotificationManager.IMPORTANCE_HIGH).apply { setBypassDnd(true) - setSound(Uri.parse(alarm.soundUri), audioAttributes) + setSound(null, null) notificationManager.createNotificationChannel(this) } } @@ -50,7 +48,7 @@ class AlarmReceiver : BroadcastReceiver() { putExtra(ALARM_ID, id) }, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) - val builder = NotificationCompat.Builder(context, "Alarm") + val builder = NotificationCompat.Builder(context, ALARM_NOTIFICATION_CHANNEL_ID) .setSmallIcon(R.drawable.ic_alarm_vector) .setContentTitle(context.getString(R.string.alarm)) .setAutoCancel(true) @@ -72,4 +70,9 @@ class AlarmReceiver : BroadcastReceiver() { } } } + + @RequiresApi(Build.VERSION_CODES.O) + private fun oldNotificationChannelCleanup(notificationManager: NotificationManager) { + notificationManager.deleteNotificationChannel("Alarm") + } }