Conception et implémentation du lecteur feed (pool, preload, thermal) et branchement sur une API média existante

Feed vidéo vertical Android — pool de lecteurs et throttle thermique

Client Android (Compose + Media3) : pool fixe de 3 ExoPlayer, preload HLS voisin, bascule basse conso sur statut thermique sévère.

3
ExoPlayer en pool
±1
voisinage actif
thermal
mode basse conso

Contexte

Application Android de démonstration commerçants : feed vertical plein écran consommant des manifests HLS déjà prêts côté API média (le pipeline d'encodage est hors périmètre de cette fiche).

Le problème

Créer/détruire un ExoPlayer à chaque swipe coûte cher ; un préchargement trop large chauffe l'appareil ; il fallait un voisinage borné et une réaction au thermal throttling système.

L'approche

  • Pool fixe de 3 ExoPlayer (précédent / courant / suivant) ; un seul playWhenReady à la fois.
  • Preload HLS via Media3 DefaultPreloadManager avec durées selon la distance d'index.
  • ThermalMonitor (API PowerManager) : mode basse consommation qui réduit durée et portée du preload.
  • UI Jetpack Compose ; réécriture d'hôte CDN pour tests sur téléphone physique (même Wi‑Fi).

Pourquoi ce choix

Media3/ExoPlayer natif plutôt qu'un lecteur custom : le travail utile est la politique de pool et de thermique, pas réinventer le décodeur HLS.

Résultat mesuré

  • Feed vertical jouable contre une API média locale
  • Voisinage lecteur borné à ±1 avec preload distant plafonné
  • Dégradation automatique en thermal status ≥ SEVERE