fix(recordings): не зависать плееру записи; меньше задержка обложки

Bug1: плеер записи (singleton ExoPlayer) не глушился при закрытии шторки и
уходе с экрана → аудио-сирота без управления, запуск радио конфликтовал.
Теперь воспроизведение записи останавливается на onDismiss и onDispose
экрана записей, а старт радио глушит плеер записи (взаимоисключение).

Bug2: обложка/трек на открытом плеере обновлялись с задержкой при записи.
Эмиссия спектра ограничена ~45/с (было ~86/с) — меньше перегруз перерисовки;
поллинг now-playing в захвате маркеров ускорен 15с→8с (точнее тайм-коды).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-04 19:03:44 +03:00
parent d9c83a83e9
commit 53cd1601dc
4 changed files with 24 additions and 6 deletions

View File

@@ -37,7 +37,8 @@ class PlayerViewModel @Inject constructor(
private val settingsRepository: SettingsRepository,
private val recordingRepository: RecordingRepository,
private val pushHistoryUseCase: PushHistoryUseCase,
private val loveStreamResolver: com.radiola.data.remote.LoveStreamResolver
private val loveStreamResolver: com.radiola.data.remote.LoveStreamResolver,
private val recordingPlaybackController: com.radiola.service.RecordingPlaybackController
) : ViewModel() {
val isPlaying: StateFlow<Boolean> = playerController.isPlaying
@@ -98,6 +99,9 @@ class PlayerViewModel @Inject constructor(
}
fun play(station: Station, playlist: List<Station>? = null) {
// Глушим плеер записи, если он играл — иначе два ExoPlayer'а конфликтуют
// (радио не стартует, запись зависает без управления).
recordingPlaybackController.stop()
_currentStation.value = station
_currentTrack.value = null
_playlist.value = playlist ?: _stations.value