feat(player): переключатель качества звука на экране воспроизведения
Перепроверены все 594 рабочие станции на наличие битрейт-вариантов потока (скрипт-пробер). У 71 станции найдено по 2–4 качества (Record-флагманы 96/64/32, zaycev 256/128/48, ВГТРК 192/128/64, НАШЕ/Орфей/Шансон HQ и др.) — записаны в поле qualities в stations.json. HLS (EMG) и Love (UID-привязка) корректно пропущены. Клиент: модель StreamQuality, хранение в Room (миграция v5), предпочтение битрейта в настройках. На экране плеера — чип текущего качества (виден только если вариантов ≥2) и шторка «Качество звука» со ступенями; переключение на лету без сброса now-playing, выбор запоминается между станциями. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -154,6 +154,18 @@ class PlayerController @Inject constructor(
|
||||
_currentStationPrefix.value = stationPrefix
|
||||
}
|
||||
|
||||
/** Сменить URL потока (переключение качества) без потери текущих метаданных/обложки. */
|
||||
fun changeStream(url: String) {
|
||||
Log.d("PlayerController", "changeStream() url=$url")
|
||||
val keepMetadata = exoPlayer.currentMediaItem?.mediaMetadata
|
||||
_icyTitle.value = null
|
||||
val builder = MediaItem.Builder().setUri(url)
|
||||
if (keepMetadata != null) builder.setMediaMetadata(keepMetadata)
|
||||
exoPlayer.setMediaItem(builder.build())
|
||||
exoPlayer.prepare()
|
||||
exoPlayer.play()
|
||||
}
|
||||
|
||||
fun updateMetadata(song: String, artist: String, coverUrl: String, stationName: String) {
|
||||
val currentMediaItem = exoPlayer.currentMediaItem ?: return
|
||||
val artworkUri = coverUrl.takeIf { it.isNotBlank() }?.let { Uri.parse(it) }
|
||||
|
||||
Reference in New Issue
Block a user