feat(app-glasses): гашение экрана очков → пауза видео+звука, включение → продолжение
Требование пользователя (железо): погасил экран очков — звук тоже должен остановиться (раньше ExoPlayer «тормозил», звук играл, синк дёргал звук к видео). MainActivity: onPause → pauseIfPlaying (флаг resumeAfterScreenOn), PlaybackPosition(playing=false) → звук пауза ≤5с; onResume → resume + PlaybackPosition(playing=true) → звук синхронно. MovieController.resume() получил guard на существующий плеер. Железо: «экран погас — пауза» → sync стоп → «экран включён — продолжаю» → diff 247.
This commit is contained in:
@@ -23,6 +23,8 @@ import androidx.compose.ui.unit.dp
|
||||
import pw.binom.viewmate.glasses.ui.GlassesMovieScreen
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
private var resumeAfterScreenOn = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
@@ -43,9 +45,21 @@ class MainActivity : ComponentActivity() {
|
||||
log("ui", "иммерсивный режим включён")
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
val was = GlassesApp.instance.movieController.pauseIfPlaying()
|
||||
resumeAfterScreenOn = was
|
||||
if (was) log("ui", "экран погас — пауза")
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
hideSystemBars()
|
||||
if (resumeAfterScreenOn) {
|
||||
resumeAfterScreenOn = false
|
||||
GlassesApp.instance.movieController.resume()
|
||||
log("ui", "экран включён — продолжаю")
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideSystemBars() {
|
||||
|
||||
@@ -162,8 +162,12 @@ class MovieController(private val context: Context) {
|
||||
return wasPlaying
|
||||
}
|
||||
|
||||
/** Продолжить с того же места (связь восстановилась). Только с главного потока. */
|
||||
/** Продолжить с того же места (связь восстановилась / экран включён). Только с главного потока. */
|
||||
fun resume() {
|
||||
_player?.play()
|
||||
val player = _player ?: run {
|
||||
log("glasses", "resume проигнорирован: плеер не активен")
|
||||
return
|
||||
}
|
||||
player.play()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user