Construindo o player de áudio do zero
Quando começamos a desenvolver o Lyrify Music, uma das primeiras decisões foi: qual biblioteca de reprodução de áudio usar?
O Android tem várias opções — desde o MediaPlayer clássico até soluções mais modernas como o Media3 (sucessor do ExoPlayer). Depois de testar ambas, optamos pelo Media3 ExoPlayer por três razões principais.
Porquê Media3 ExoPlayer?
A primeira é o suporte nativo a múltiplos formatos. O Lyrify Music precisa tocar MP3, M4A, FLAC, WAV e OGG. O Media3 lida com todos sem necessidade de codecs adicionais, graças à arquitetura modular de extensões.
A segunda é o controle fino sobre a reprodução. Precisávamos de algo que nos permitisse implementar fila inteligente, repetição, modo aleatório e suporte a metadata (como capas de álbum e informações de artista) sem reinventar a roda.
A terceira é a comunidade ativa. O Media3 é mantido pelo Google e tem atualizações frequentes, documentação sólida e uma base de utilizadores grande — o que significa menos surpresas desagradáveis.
Fila inteligente
Um dos recursos mais pedidos pelos betatesters (sim, já temos alguns testando) é a fila inteligente. Em vez de simplesmente tocar a próxima faixa, o Lyrify Music analisa o histórico recente para sugerir músicas que combinam com o momento.
Implementamos isso com um algoritmo simples de peso por género e artista: se ouviste três músicas de jazz seguidas, a fila prioriza faixas desse género nas próximas posições. Simples, mas eficaz.
"A música certa no momento certo, sem que precisas pensar nisso."
Desafios com formatos
Nem tudo foram flores. O maior desafio foi garantir que todos os 5 formatos se comportassem de forma consistente — especialmente o FLAC e o WAV, que são ficheiros maiores e podem consumir mais memória em dispositivos com poucos recursos.
A solução foi implementar um buffer adaptativo: em dispositivos com menos de 2 GB de RAM, o buffer é reduzido para evitar crashes; em dispositivos mais potentes, priorizamos qualidade.
No final, o resultado é um player leve que toca qualquer ficheiro que esteja no teu dispositivo, independentemente do formato, sem consumir dados móveis ou bateria excessiva.