diff --git a/composeApp/src/androidMain/kotlin/org/spotube/spotube/media/PlaybackService.kt b/composeApp/src/androidMain/kotlin/org/spotube/spotube/media/PlaybackService.kt
index 49b55ac4..bc3fdaf1 100644
--- a/composeApp/src/androidMain/kotlin/org/spotube/spotube/media/PlaybackService.kt
+++ b/composeApp/src/androidMain/kotlin/org/spotube/spotube/media/PlaybackService.kt
@@ -51,7 +51,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
@@ -59,7 +58,6 @@ import org.jetbrains.compose.resources.getString
import spotube.composeapp.generated.resources.Res
import spotube.composeapp.generated.resources.notification_playback_channel_description
import spotube.composeapp.generated.resources.notification_playback_channel_name
-import spotube.composeapp.generated.resources.notification_playback_service_text
@OptIn(UnstableApi::class)
class PlaybackService : MediaLibraryService(), KoinComponent {
@@ -96,9 +94,10 @@ class PlaybackService : MediaLibraryService(), KoinComponent {
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
+ // Short-lived placeholder until Media3 posts the playback notification. No localized text:
+ // loading it here would block the main thread (see createNotificationChannel).
val notification = NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Spotube")
- .setContentText(runBlocking { getString(Res.string.notification_playback_service_text) })
.setSmallIcon(R.drawable.ic_stat_spotube)
.setContentIntent(sessionActivity)
.setOngoing(true)
@@ -125,21 +124,32 @@ class PlaybackService : MediaLibraryService(), KoinComponent {
Log.i(TAG, "Library session created")
}
+ /**
+ * The channel must exist before startForeground, so it's created right away under the app name
+ * and renamed once the localized strings load.
+ *
+ * Never `runBlocking { getString(...) }` here: onCreate runs on the main thread, and Compose
+ * resources share one in-flight load per strings file. If App()'s stringResource started that
+ * load on the main dispatcher first, blocking main to await it deadlocks the app on its
+ * splash screen.
+ */
@SuppressLint("ObsoleteSdkInt")
private fun createNotificationChannel() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- val channel = NotificationChannel(
- CHANNEL_ID,
- runBlocking { getString(Res.string.notification_playback_channel_name) },
- NotificationManager.IMPORTANCE_LOW
- ).apply {
- description = runBlocking {
- getString(Res.string.notification_playback_channel_description)
- }
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return
+ val manager = getSystemService(NotificationManager::class.java)
+ fun channel(name: String, description: String? = null) =
+ NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_LOW).apply {
+ this.description = description
setShowBadge(false)
}
- val manager = getSystemService(NotificationManager::class.java)
- manager.createNotificationChannel(channel)
+
+ manager.createNotificationChannel(channel("Spotube"))
+ serviceScope.launch {
+ // Re-creating a channel with the same ID updates its name and description.
+ manager.createNotificationChannel(
+ channel(
+ name = getString(Res.string.notification_playback_channel_name),
+ description = getString(Res.string.notification_playback_channel_description)))
}
}
diff --git a/composeApp/src/commonMain/composeResources/values-ar/strings.xml b/composeApp/src/commonMain/composeResources/values-ar/strings.xml
index febc7e6a..6671d6d9 100644
--- a/composeApp/src/commonMain/composeResources/values-ar/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ar/strings.xml
@@ -938,7 +938,6 @@
إغلاق
- خدمة التشغيل
التشغيل
عناصر التحكم في تشغيل الوسائط
diff --git a/composeApp/src/commonMain/composeResources/values-bn/strings.xml b/composeApp/src/commonMain/composeResources/values-bn/strings.xml
index ca7c78cf..a3c26ed2 100644
--- a/composeApp/src/commonMain/composeResources/values-bn/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-bn/strings.xml
@@ -914,7 +914,6 @@
বন্ধ করুন
- প্লেব্যাক সার্ভিস
প্লেব্যাক
মিডিয়া প্লেব্যাক কন্ট্রোল
diff --git a/composeApp/src/commonMain/composeResources/values-de/strings.xml b/composeApp/src/commonMain/composeResources/values-de/strings.xml
index ec3d8da3..4a4115dd 100644
--- a/composeApp/src/commonMain/composeResources/values-de/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-de/strings.xml
@@ -914,7 +914,6 @@
Schließen
- Wiedergabedienst
Wiedergabe
Steuerung der Medienwiedergabe
diff --git a/composeApp/src/commonMain/composeResources/values-es/strings.xml b/composeApp/src/commonMain/composeResources/values-es/strings.xml
index 4fec22e5..48c78bf3 100644
--- a/composeApp/src/commonMain/composeResources/values-es/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-es/strings.xml
@@ -920,7 +920,6 @@
Cerrar
- Servicio de reproducción
Reproducción
Controles de reproducción multimedia
diff --git a/composeApp/src/commonMain/composeResources/values-fa/strings.xml b/composeApp/src/commonMain/composeResources/values-fa/strings.xml
index 679313d5..8a5659ed 100644
--- a/composeApp/src/commonMain/composeResources/values-fa/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-fa/strings.xml
@@ -914,7 +914,6 @@
بستن
- سرویس پخش
پخش
کنترلهای پخش رسانه
diff --git a/composeApp/src/commonMain/composeResources/values-fr/strings.xml b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
index 644cb9f9..2737c4bc 100644
--- a/composeApp/src/commonMain/composeResources/values-fr/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
@@ -920,7 +920,6 @@
Fermer
- Service de lecture
Lecture
Commandes de lecture multimédia
diff --git a/composeApp/src/commonMain/composeResources/values-hi/strings.xml b/composeApp/src/commonMain/composeResources/values-hi/strings.xml
index 4deeb649..2ed9b459 100644
--- a/composeApp/src/commonMain/composeResources/values-hi/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-hi/strings.xml
@@ -913,7 +913,6 @@
बंद करें
- प्लेबैक सेवा
प्लेबैक
मीडिया प्लेबैक कंट्रोल
diff --git a/composeApp/src/commonMain/composeResources/values-id/strings.xml b/composeApp/src/commonMain/composeResources/values-id/strings.xml
index 27c80b88..f3e1ca6a 100644
--- a/composeApp/src/commonMain/composeResources/values-id/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-id/strings.xml
@@ -908,7 +908,6 @@
Tutup
- Layanan pemutaran
Pemutaran
Kontrol pemutaran media
diff --git a/composeApp/src/commonMain/composeResources/values-it/strings.xml b/composeApp/src/commonMain/composeResources/values-it/strings.xml
index 36196910..b6925383 100644
--- a/composeApp/src/commonMain/composeResources/values-it/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-it/strings.xml
@@ -920,7 +920,6 @@
Chiudi
- Servizio di riproduzione
Riproduzione
Controlli di riproduzione multimediale
diff --git a/composeApp/src/commonMain/composeResources/values-ja/strings.xml b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
index c6b4195d..a915d409 100644
--- a/composeApp/src/commonMain/composeResources/values-ja/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
@@ -908,7 +908,6 @@
閉じる
- 再生サービス
再生
メディア再生コントロール
diff --git a/composeApp/src/commonMain/composeResources/values-ko/strings.xml b/composeApp/src/commonMain/composeResources/values-ko/strings.xml
index cad8b072..5464dc07 100644
--- a/composeApp/src/commonMain/composeResources/values-ko/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ko/strings.xml
@@ -908,7 +908,6 @@
닫기
- 재생 서비스
재생
미디어 재생 컨트롤
diff --git a/composeApp/src/commonMain/composeResources/values-nl/strings.xml b/composeApp/src/commonMain/composeResources/values-nl/strings.xml
index 3206d0d6..337ad03c 100644
--- a/composeApp/src/commonMain/composeResources/values-nl/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-nl/strings.xml
@@ -914,7 +914,6 @@
Sluiten
- Afspeelservice
Afspelen
Bediening voor media-afspelen
diff --git a/composeApp/src/commonMain/composeResources/values-pl/strings.xml b/composeApp/src/commonMain/composeResources/values-pl/strings.xml
index fa6bcfb6..f5b66965 100644
--- a/composeApp/src/commonMain/composeResources/values-pl/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-pl/strings.xml
@@ -926,7 +926,6 @@
Zamknij
- Usługa odtwarzania
Odtwarzanie
Sterowanie odtwarzaniem multimediów
diff --git a/composeApp/src/commonMain/composeResources/values-pt/strings.xml b/composeApp/src/commonMain/composeResources/values-pt/strings.xml
index f7c11447..fed0a741 100644
--- a/composeApp/src/commonMain/composeResources/values-pt/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-pt/strings.xml
@@ -920,7 +920,6 @@
Fechar
- Serviço de reprodução
Reprodução
Controles de reprodução de mídia
diff --git a/composeApp/src/commonMain/composeResources/values-ru/strings.xml b/composeApp/src/commonMain/composeResources/values-ru/strings.xml
index 28b5450e..e499d01d 100644
--- a/composeApp/src/commonMain/composeResources/values-ru/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ru/strings.xml
@@ -926,7 +926,6 @@
Закрыть
- Служба воспроизведения
Воспроизведение
Управление воспроизведением
diff --git a/composeApp/src/commonMain/composeResources/values-th/strings.xml b/composeApp/src/commonMain/composeResources/values-th/strings.xml
index 2b14b08d..5c5b861d 100644
--- a/composeApp/src/commonMain/composeResources/values-th/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-th/strings.xml
@@ -908,7 +908,6 @@
ปิด
- บริการเล่นเพลง
การเล่น
ตัวควบคุมการเล่นสื่อ
diff --git a/composeApp/src/commonMain/composeResources/values-tr/strings.xml b/composeApp/src/commonMain/composeResources/values-tr/strings.xml
index 123d18cd..4999b886 100644
--- a/composeApp/src/commonMain/composeResources/values-tr/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-tr/strings.xml
@@ -914,7 +914,6 @@
Kapat
- Çalma hizmeti
Çalma
Medya çalma kontrolleri
diff --git a/composeApp/src/commonMain/composeResources/values-uk/strings.xml b/composeApp/src/commonMain/composeResources/values-uk/strings.xml
index 0fbd6d0e..1f07bb5d 100644
--- a/composeApp/src/commonMain/composeResources/values-uk/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-uk/strings.xml
@@ -926,7 +926,6 @@
Закрити
- Служба відтворення
Відтворення
Керування відтворенням
diff --git a/composeApp/src/commonMain/composeResources/values-vi/strings.xml b/composeApp/src/commonMain/composeResources/values-vi/strings.xml
index 241c50f4..b6d4f5ea 100644
--- a/composeApp/src/commonMain/composeResources/values-vi/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-vi/strings.xml
@@ -908,7 +908,6 @@
Đóng
- Dịch vụ phát nhạc
Phát nhạc
Điều khiển phát nội dung
diff --git a/composeApp/src/commonMain/composeResources/values-zh-rTW/strings.xml b/composeApp/src/commonMain/composeResources/values-zh-rTW/strings.xml
index e10e720e..f5907323 100644
--- a/composeApp/src/commonMain/composeResources/values-zh-rTW/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-zh-rTW/strings.xml
@@ -908,7 +908,6 @@
關閉
- 播放服務
播放
媒體播放控制項
diff --git a/composeApp/src/commonMain/composeResources/values-zh/strings.xml b/composeApp/src/commonMain/composeResources/values-zh/strings.xml
index b247fac7..d154c6a2 100644
--- a/composeApp/src/commonMain/composeResources/values-zh/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-zh/strings.xml
@@ -908,7 +908,6 @@
关闭
- 播放服务
播放
媒体播放控制