Aplicación de transmisión de radio en línea para Android

Estoy construyendo una aplicación de Android que transmitirá varias estaciones de radio de un país latino, hay como 10 estaciones que sé que se pueden reproducir en android, obtuve las URL de ellas y las hice funcionar usando este tutorial (se eliminó el enlace, porque está muerto) pero el problema que tengo es que se reproduce durante varios segundos y luego deja de seguir cargándose pero no reinicia la transmisión, mis preguntas:

  • Si alguien ha trabajado con este tutorial puede explicarme cómo hacer que fluya constantemente sin detenerse.
  • ¿Hay una manera más fácil de transmitir audio de radio? este tutorial parece viejo, ¿hay un tutorial más nuevo o una muestra de código más reciente para estudiar o usar?
  • ¿Puede alguien enviarme de la manera correcta?

Así que encontré esta muestra y me funciona, aquí está si tienes el mismo problema:

en myMain.java

import android.app.Activity; import android.os.Bundle; import java.io.IOException; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnPreparedListener; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; public class myMain extends Activity implements OnClickListener { private ProgressBar playSeekBar; private Button buttonPlay; private Button buttonStopPlay; private MediaPlayer player; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initializeUIElements(); initializeMediaPlayer(); } private void initializeUIElements() { playSeekBar = (ProgressBar) findViewById(R.id.progressBar1); playSeekBar.setMax(100); playSeekBar.setVisibility(View.INVISIBLE); buttonPlay = (Button) findViewById(R.id.buttonPlay); buttonPlay.setOnClickListener(this); buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay); buttonStopPlay.setEnabled(false); buttonStopPlay.setOnClickListener(this); } public void onClick(View v) { if (v == buttonPlay) { startPlaying(); } else if (v == buttonStopPlay) { stopPlaying(); } } private void startPlaying() { buttonStopPlay.setEnabled(true); buttonPlay.setEnabled(false); playSeekBar.setVisibility(View.VISIBLE); player.prepareAsync(); player.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer mp) { player.start(); } }); } private void stopPlaying() { if (player.isPlaying()) { player.stop(); player.release(); initializeMediaPlayer(); } buttonPlay.setEnabled(true); buttonStopPlay.setEnabled(false); playSeekBar.setVisibility(View.INVISIBLE); } private void initializeMediaPlayer() { player = new MediaPlayer(); try { player.setDataSource("http://usa8-vn.mixstream.net:8138"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { playSeekBar.setSecondaryProgress(percent); Log.i("Buffering", "" + percent); } }); } @Override protected void onPause() { super.onPause(); if (player.isPlaying()) { player.stop(); } } } 

en el código XML (main.xml):

          

y el manifiesto de Android:

             

Bueno, si esperas una barra de progreso, obtienes un desenlace, esta es una transmisión, que de manera predeterminada no tiene tiempo para terminar, es interminable. Acerca de la URL puede usar el punto de assembly en shoutcast2 / icecast server y / en shoutcast1.

¡En onResume o wrvr que quieras! Pega este código.

  String url = "http://server2.crearradio.com:8371"; // your URL here final MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.setDataSource(url); } catch (IOException e) { e.printStackTrace(); } try { mediaPlayer.prepare(); // might take long! (for buffering, etc) } catch (IOException e) { e.printStackTrace(); } mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); } }); 

En manifest.xml, agregue el permiso de Internet.