mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-03-12 17:40:18 +01:00
Merge pull request #466 from rawlin/#242
#242 Fix for alarm playing twice
This commit is contained in:
commit
39a9c6d862
@ -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
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user