diff --git a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/PhoneApp.kt b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/PhoneApp.kt index bc81d0d..14a1e1d 100644 --- a/app-phone/src/main/kotlin/pw/binom/viewmate/phone/PhoneApp.kt +++ b/app-phone/src/main/kotlin/pw/binom/viewmate/phone/PhoneApp.kt @@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch +import pw.binom.viewmate.core.GlassesMode import pw.binom.viewmate.core.media.JellyfinClient import pw.binom.viewmate.core.media.MirrorClient import pw.binom.viewmate.core.phone.PhoneActions @@ -58,7 +59,7 @@ class PhoneApp : Application() { * PlaybackPosition с itemId+audioIndex, а audioSync не активен (телефон «не в курсе»). * Создаём аудио-плеер с позиции очков — как в DetailsScreen.onWatch. */ - private suspend fun autostartAudio(itemId: String?, audioIndex: Int, positionMs: Long) { + private suspend fun autostartAudio(itemId: String?, audioIndex: Int, positionMs: Long, playing: Boolean) { if (itemId == null || audioSync.isActive || itemId == lastFailedItemId) return val mirrorFiles = runCatching { mirror.mirrorByItem(itemId) }.getOrNull()?.files val source = resolveAudioSource(downloadManager, itemId, mirrorFiles, audioIndex) @@ -66,6 +67,13 @@ class PhoneApp : Application() { lastFailedItemId = null audioSync.play(source, positionMs) log("audio", "автоподхват звука: itemId=$itemId idx=$audioIndex pos=$positionMs") + val item = runCatching { jellyfin.item(userId.value, itemId) }.getOrNull() + if (item != null) { + state.currentItem = item + state.currentAudioIndex = audioIndex + state.mode = GlassesMode.MOVIE + state.playing = playing + } } else { log("audio", "автоподхват звука не удался: itemId=$itemId idx=$audioIndex (нет источника)") lastFailedItemId = itemId @@ -84,7 +92,7 @@ class PhoneApp : Application() { // + автоподхват звука (очки играют после рестарта телефона, audioSync не активен) server.hub.onPlaybackPosition = { positionMs, playing, itemId, audioIndex -> audioSync.sync(positionMs, playing) - scope.launch { autostartAudio(itemId, audioIndex, positionMs) } + scope.launch { autostartAudio(itemId, audioIndex, positionMs, playing) } } // автоматика обрыва связи: потеря → пауза, восстановление → продолжить с того же места