Ehi, Sto utilizzando MediaPlayer per riprodurre un normale flusso ShoutCast. Il codice è semplice con prepareAsync() e un gestore per avviare la riproduzione. Mentre funziona perfettamente con alcuni flussi come DI.FM o ETN.FM (http://u10.di.fm:80/di_progressive), con altri (http://mp3.wpsu.org:8000/) ha vinto ' andare oltre lo stato di preparazione. Neanche altri ascoltatori vengono chiamati.Android MediaPlayer si sta preparando troppo a lungo
//Uri streamUri = Uri.parse("http://u10.di.fm:80/di_progressive"); /* works */
Uri streamUri = Uri.parse("http://mp3.wpsu.org:8000/"); /* stuck on prepare state */
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(this.getBaseContext(), streamUri);
mediaPlayer.prepareAsync();
Qualsiasi feedback è apprezzato!
Izvorean: utilizzare 'adb logcat', DDMS o la prospettiva DDMS in Eclipse per esaminare LogCat e cercare eventuali avvisi che potrebbero essere generati. – CommonsWare
Sto usando il debug di Eclipse, ma il MediaPlayer non invia messaggi di log :( – Sergei
Non so se questo è ancora valido, ma i miei 2 centesimi: 1. 1. È possibile stampare messaggi su logcat utilizzando Log. Controllare http : //developer.android.com/reference/android/util/Log.html 2. create() è un metodo migliore per creare un'istanza di un oggetto della classe MediaPlayer. Ulteriori dettagli: http://developer.android.com /reference/android/media/MediaPlayer.html#create(android.content.Context,%20android.net.Uri,%20android.view.SurfaceHolder) – Sriram