From 0fe41a55c1eab363df10cec8a750214be07c0943 Mon Sep 17 00:00:00 2001 From: Max Litruv Boonzaayer Date: Tue, 28 Apr 2026 15:46:20 +1000 Subject: [PATCH] feat: add custom notification sound for message alerts in MatrixSyncService --- .../java/com/paarrot/app/MatrixSyncService.kt | 16 ++++++++++++++-- .../src/main/res/raw/paarrot_notification.ogg | Bin 0 -> 8508 bytes cinny | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 android/app/src/main/res/raw/paarrot_notification.ogg diff --git a/android/app/src/main/java/com/paarrot/app/MatrixSyncService.kt b/android/app/src/main/java/com/paarrot/app/MatrixSyncService.kt index ee93b0f..378917d 100644 --- a/android/app/src/main/java/com/paarrot/app/MatrixSyncService.kt +++ b/android/app/src/main/java/com/paarrot/app/MatrixSyncService.kt @@ -5,8 +5,10 @@ import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent import android.app.Service +import android.media.AudioAttributes import android.content.Context import android.content.Intent +import android.net.Uri import android.os.Build import android.util.Log import android.graphics.Bitmap @@ -346,10 +348,20 @@ class MatrixSyncService : Service() { private fun ensureMessageChannel(nm: NotificationManager) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val soundUri = Uri.parse("android.resource://$packageName/${R.raw.paarrot_notification}") val channel = NotificationChannel( CHANNEL_MESSAGES, "Messages", NotificationManager.IMPORTANCE_HIGH, - ).apply { description = "Matrix message notifications" } + ).apply { + description = "Matrix message notifications" + setSound( + soundUri, + AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_NOTIFICATION) + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .build(), + ) + } nm.createNotificationChannel(channel) } } @@ -366,7 +378,7 @@ class MatrixSyncService : Service() { private const val KEY_LAST_WAKE_MS = "last_wake_ms" private const val NOTIF_ID_STATUS = 1001 private const val CHANNEL_STATUS = "sync_status" - private const val CHANNEL_MESSAGES = "messages" + private const val CHANNEL_MESSAGES = "messages_paarrot" private const val MIN_WAKE_INTERVAL_MS = 7_500L const val MODE_ONE_SHOT = "one_shot" diff --git a/android/app/src/main/res/raw/paarrot_notification.ogg b/android/app/src/main/res/raw/paarrot_notification.ogg new file mode 100644 index 0000000000000000000000000000000000000000..18ecd0988f6e0b61a4a07fcfbbc02d846c87a4bd GIT binary patch literal 8508 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 Sy5>1I7HmL*WiY0*a{NEa8|`2K literal 0 HcmV?d00001 diff --git a/cinny b/cinny index ef0aa2a..ffec244 160000 --- a/cinny +++ b/cinny @@ -1 +1 @@ -Subproject commit ef0aa2a8478950466933065d0f71ab33e762caec +Subproject commit ffec244113886dd1a17157db0fd11673b90a8a0c