Skip to content

Commit 39f2836

Browse files
committed
Fix audio playback on Android Auto
When opus is the decided format, use the proper base url on Android Auto to avoid playback errors.
1 parent 35da05e commit 39f2836

File tree

4 files changed

+14
-16
lines changed

4 files changed

+14
-16
lines changed

autoquran/src/main/java/com/quran/labs/autoquran/di/ServiceBindings.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.quran.labs.autoquran.di
22

33
import android.content.Context
4-
import com.quran.data.model.audio.Qari
54
import com.quran.data.source.PageProvider
65
import com.quran.data.source.QuranDataSource
7-
import com.quran.labs.androidquran.common.audio.model.QariItem
86
import com.quran.labs.androidquran.common.audio.util.AudioExtensionDecider
7+
import com.quran.labs.androidquran.common.audio.util.QuranAudioExtensionDecider
98
import com.quran.mobile.di.qualifier.ApplicationContext
109
import dev.zacsweers.metro.BindingContainer
1110
import dev.zacsweers.metro.Provides
@@ -30,12 +29,6 @@ class ServiceBindings(private val appContext: Context) {
3029
}
3130

3231
@Provides
33-
fun provideAudioExtensionDecider(): AudioExtensionDecider {
34-
return object : AudioExtensionDecider {
35-
override fun audioExtensionForQari(qari: Qari): String = "mp3"
36-
override fun audioExtensionForQari(qariItem: QariItem): String = "mp3"
37-
override fun allowedAudioExtensions(qari: Qari): List<String> = listOf("mp3")
38-
override fun allowedAudioExtensions(qariItem: QariItem): List<String> = listOf("mp3")
39-
}
40-
}
32+
fun provideAudioExtensionDecider(quranAudioExtensionDecider: QuranAudioExtensionDecider): AudioExtensionDecider =
33+
quranAudioExtensionDecider
4134
}

app/src/main/java/com/quran/labs/androidquran/data/QuranAudioExtensionDecider.kt renamed to common/audio/src/main/java/com/quran/labs/androidquran/common/audio/util/QuranAudioExtensionDecider.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
package com.quran.labs.androidquran.data
1+
package com.quran.labs.androidquran.common.audio.util
22

33
import com.quran.data.di.AppScope
44
import com.quran.data.model.audio.Qari
55
import com.quran.labs.androidquran.common.audio.model.QariItem
6-
import com.quran.labs.androidquran.common.audio.util.AudioExtensionDecider
76
import dev.zacsweers.metro.ContributesBinding
87
import dev.zacsweers.metro.Inject
98

feature/autoquran/src/main/java/com/quran/labs/feature/autoquran/common/BrowsableSurahBuilder.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import kotlinx.coroutines.Dispatchers
1414
import kotlinx.coroutines.withContext
1515

1616
class BrowsableSurahBuilder @Inject constructor(
17-
@ApplicationContext private val appContext: Context,
17+
@param:ApplicationContext private val appContext: Context,
1818
private val pageProvider: PageProvider,
1919
private val audioExtensionDecider: AudioExtensionDecider
2020
) {
@@ -136,6 +136,12 @@ class BrowsableSurahBuilder @Inject constructor(
136136
private fun makeSuraMediaItem(qari: Qari, sura: Int): MediaItem {
137137
val suraName = getSuraName(appContext, sura, wantPrefix = true, wantTranslation = false)
138138
val extension = audioExtensionDecider.audioExtensionForQari(qari)
139+
val (baseUrl, mimeType) = if (extension == "opus" && qari.opusUrl != null) {
140+
qari.opusUrl to MimeTypes.AUDIO_OPUS
141+
} else {
142+
qari.url to MimeTypes.AUDIO_MPEG
143+
}
144+
139145
return MediaItem.Builder()
140146
.setMediaId("sura_${sura}_${qari.id}")
141147
.setMediaMetadata(
@@ -149,8 +155,8 @@ class BrowsableSurahBuilder @Inject constructor(
149155
.setArtist(appContext.getString(qari.nameResource))
150156
.build()
151157
)
152-
.setMimeType(MimeTypes.AUDIO_MPEG)
153-
.setUri(qari.url + makeThreeDigit(sura) + ".$extension")
158+
.setMimeType(mimeType)
159+
.setUri(baseUrl + makeThreeDigit(sura) + ".$extension")
154160
.build()
155161
}
156162

feature/autoquran/src/main/java/com/quran/labs/feature/autoquran/service/QuranBrowsableAudioPlaybackService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class QuranBrowsableAudioPlaybackService : MediaSessionService() {
9595
override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession? =
9696
mediaSession
9797

98-
private inner class PlayerEventListener : Player.Listener
98+
private class PlayerEventListener : Player.Listener
9999

100100
private inner class QuranServiceCallback : MediaLibrarySession.Callback {
101101

0 commit comments

Comments
 (0)