Rendere più affidabili riproduzione e sincronizzazione delle playlist in MetroList
Problema
La sincronizzazione poteva duplicare playlist e contribuire a problemi di memoria. Anche i tempi del crossfade dovevano tenere conto della velocità di riproduzione, mentre alcuni podcast fallivano con IO_UNSPECIFIED per la validazione dell'URL.
Modifiche
Ho spostato la pulizia delle playlist prima del ciclo di sincronizzazione per evitare elaborazioni duplicate. Per il crossfade ho adattato il tempo di attivazione alla velocità di riproduzione, mantenuto tale velocità nel player secondario e usato un PlayerMessage di ExoPlayer per temporizzare con precisione sul main looper. Per i podcast ho mantenuto la validazione HEAD per gli stream WEB_REMIX e chiuso correttamente la risposta OkHttp.
Risultato
La sincronizzazione delle playlist è meno soggetta a errori, le transizioni seguono la velocità di riproduzione e la validazione gestisce correttamente la sorgente podcast interessata.
Commits: playlist sync, crossfade timing, podcast playback