fix: radio playback "source error" on android auto (#426)

This commit is contained in:
Denis Machard
2026-02-10 05:00:33 +01:00
committed by GitHub
parent b8dc985279
commit e06a168350
3 changed files with 30 additions and 21 deletions

View File

@@ -32,6 +32,7 @@ import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_REPEAT_MO
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON
import com.google.common.collect.ImmutableList
import com.cappielloantonio.tempo.util.Constants
import com.cappielloantonio.tempo.util.Preferences
import com.google.common.util.concurrent.Futures
import com.google.common.util.concurrent.ListenableFuture
@@ -366,11 +367,31 @@ open class MediaLibrarySessionCallback(
controller: MediaSession.ControllerInfo,
mediaItems: List<MediaItem>
): ListenableFuture<List<MediaItem>> {
return super.onAddMediaItems(
mediaSession,
controller,
MediaBrowserTree.getItems(mediaItems)
)
val firstItem = mediaItems.firstOrNull()
val isRadio = firstItem?.mediaId?.startsWith("ir-") == true
if (isRadio) {
return Futures.transformAsync(
automotiveRepository.internetRadioStations,
{ result ->
val stations = result?.value
val selected = stations?.find { it.mediaId == firstItem?.mediaId }
if (selected != null) {
val updatedSelected = selected.buildUpon()
.setMimeType(selected.localConfiguration?.mimeType)
.build()
Futures.immediateFuture(listOf(updatedSelected))
} else {
Futures.immediateFuture(emptyList())
}
},
androidx.core.content.ContextCompat.getMainExecutor(context)
)
}
val resolvedItems = MediaBrowserTree.getItems(mediaItems)
return super.onAddMediaItems(mediaSession, controller, resolvedItems)
}
override fun onSearch(