Aplicación de streaming de radio en línea para Android
Estoy construyendo una aplicación para Android que transmitirá varias estaciones de radio de un país latino, hay 10 estaciones que sé que se pueden reproducir en android, tengo la URL de ellos y en realidad les hizo trabajar con este tutorial (enlace eliminado, Porque está muerto), pero el problema que tengo es que se reproduce durante varios segundos y luego se detiene sigue cargando pero no reinicia el streaming, mis preguntas:
- Si alguien ha trabajado con este tutorial puede explicarme cómo hacerlo fluir constantemente sin parar.
- ¿Hay una manera más fácil de transmitir audio de radio? Este tutorial parece un poco antiguo, ¿hay un nuevo tutorial o una muestra de código más reciente para estudiar o usar?
- ¿Puede alguien enviarme el camino correcto?
- Android Cómo obtener información de ID de una sola canción desde un URI conocido
- Compruebe si onStop se llama desde la interacción del usuario, o se atenúa la pantalla
- AudioTrack, SoundPool o MediaPlayer ¿Qué debo usar?
- Barra de progreso mientras el reproductor multimedia se prepara
- Audífonos para auriculares Jack
- Android: ¿Cómo usar mediaController en la clase de servicio?
- Enrutado del reproductor multimedia de Android
- Obligar a Android a utilizar RTSP / AVP / TCP intercalado
- En android, ¿cómo puedo guardar un flujo RTSP en un archivo mientras lo reproduzco?
- Mediaplayer actualización de progreso a seekbar no suave?
- Cómo jugar a m3u8 en Android?
- MediaPlayer se detiene y se reinicia
- ¿Cómo enlazar mis archivos de Media Player?
Así que encontré esta muestra y funciona para mí, aquí es si usted tiene 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):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Source: (Radio La Chevere)" android:layout_marginTop="10dip" android:gravity="center" /> <ProgressBar android:id="@+id/progressBar1" android:indeterminateOnly="false" android:progressDrawable="@android:drawable/progress_horizontal" android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal" android:minHeight="20dip" android:maxHeight="20dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_marginTop="10dip"></ProgressBar> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_marginTop="20dip" android:gravity="center"> <Button android:text="Play" android:id="@+id/buttonPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="Stop" android:id="@+id/buttonStopPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout> </LinearLayout>
Y el manifiesto androide:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="package.your.RadioStream" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".myMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Bueno, si esperas una barra de progreso, te disapointing, este es un flujo, que por defecto no tiene tiempo para terminar es interminable. Acerca de la URL, puede utilizar el punto de montaje en el servidor shoutcast2 / icecast y / en el archivo shoutcast1.
En onResume o wrvr que desea! Pegue 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 el manifest.xml agregue el permiso de Internet.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
- Android tamaños de pantalla en píxeles para ldpi, mdpi, hpdi?
- Android studio getSlotFromBufferLocked: error de búfer desconocido