Per far suonare qualche cosa Android mette a disposizione la classe MediaPlayer, in particolare bastano queste righe di codice per far suonare il nostro device da uno stream proveniente da internet:
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(URL_STREAM);
mMediaPlayer.prepare();
mMediaPlayer.start();Ma se lo stream non è uno stream audio puro esiste un modo per far suonare il device passando i byte dell'MP3?
Il problema è il seguente. Alcuni stream audio (ad esempio quelli di SHOUTcast) sono inviati utilizzando il protocollo ICY, ovvero durante lo streaming audio vengono inviati anche dei dati sulla particolare canzone che sta suonando in quel momento.
In particolare lo stream è di questo tipo:

Quindi non posso passare direttamente la url al MediaPlayer, ma devo fare un pretrattamento dello stream, leggendo la parte Metadata a parte e inoltrando solo il flusso di byte riguardanti l'MP3 al MediaPlayer.
Avete idea su come posso fare?