Files
youtube_personal/ETAPE11_FIX_PLAY_INTENT_SEEK.md

1.6 KiB

Correctif étape 11 — état lecture + seek du Player de fond

Les nouveaux logs montraient deux problèmes précis :

lifecycle=hidden ... playing=true
lifecycle=paused ... playing=true
AudioTrack ... stop
screen interactive=false ... playing=false
start dedicated audio ... recentlyPlaying=false
switching ... shouldPlay=false
dedicated player ready at 0 ms playing=false

Donc :

  1. Android arrête le Player vidéo AVANT ACTION_SCREEN_OFF.
  2. Notre code perdait l'information qu'il était en lecture.
  3. Le Player audio de fond recevait shouldPlay=false.
  4. Son seek à ~111 s était envoyé trop tôt et restait à 0 s.

Correctif

Intention de lecture

Au callback lifecycle inactive/hidden/paused, tant que le Player vaut encore playing=true, on mémorise continueOnLock=true.

Quand ACTION_SCREEN_OFF arrive plus tard, cette valeur est utilisée même si Android a déjà mis le Player vidéo à playing=false.

Seek du Player audio

Le Player de fond attend désormais que la durée du média soit connue, puis :

  1. seek à la position courante ;
  2. vérification de la position ;
  3. jusqu'à 3 tentatives ;
  4. seulement ensuite play() ;
  5. confirmation que playing=true.

Logs attendus

[BACKGROUND] lifecycle=AppLifecycleState.hidden ... continueOnLock=true
[BACKGROUND] native screen interactive=false ... playing=false
[BACKGROUND] start dedicated audio ... continueOnLock=true
[BACKGROUND-AUDIO] switching ... shouldPlay=true
[BACKGROUND-AUDIO] seek attempt 1 -> ...
[BACKGROUND-AUDIO] seek confirmed ...
[BACKGROUND-AUDIO] dedicated player ready at ... playing=true
[BACKGROUND] dedicated audio active