Sincronizzazione delle playlist e tempi di crossfade in Metrolist
Problema
Il tempo del crossfade poteva essere errato quando cambiava la velocità di riproduzione, facendo partire troppo presto la traccia successiva. Separatamente, la sincronizzazione delle playlist poteva duplicarle e consumare molta memoria perché la pulizia avveniva dopo l’avvio del ciclo di sincronizzazione.
Modifiche
Ho adattato il calcolo del ritardo del crossfade alla velocità di riproduzione, passato quella velocità al player secondario e usato un PlayerMessage di ExoPlayer per gestire con precisione il tempo sul main looper. Per la sincronizzazione delle playlist ho spostato la pulizia prima del ciclo, così le voci obsolete vengono rimosse prima di applicare i nuovi dati.
Risultato
Le transizioni in crossfade tengono conto della velocità di riproduzione e la sincronizzazione evita i problemi di duplicazione e memoria corretti dalla modifica.