2011-06-08 17 views
33

Sto costruendo un'app per Android che trasmetterà diverse stazioni radio da un Paese latino, ci sono 10 stazioni che so possono essere riprodotte in Android, ho ricevuto l'URL da loro e fatto effettivamente farli lavorare usando questo tutorial (link rimosso, perché è morto), ma il problema che ho è che essa svolge per alcuni secondi e poi si ferma mantiene carico, ma non si riavvia lo streaming, le mie domande:App di streaming radio online per Android

  • se qualcuno ha lavorato con questo tutorial in grado di spiegarmi come farlo streaming costantemente senza sosta.
  • C'è un modo più semplice per lo streaming dell'audio della radio? questo tutorial sembra un po 'vecchio, c'è un nuovo tutorial o un nuovo esempio di codice da studiare o usare?
  • Qualcuno può mandarmi nel modo giusto?

risposta

60

Così ho trovato questo campione e funziona per me, qui è se si ha lo stesso problema:

in 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(); 
     } 
    } 
} 

in XML (main.xml) codice:

<?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> 

e il manifesto Android:

<?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> 

+0

barra di avanzamento non funzionante, ma è in streaming, per favore, date un'occhiata a quale potrebbe essere il problema? e grazie per questo tutorial di streaming sta lavorando per me. – UMAR

+0

@zvzej: puoi dirmi come possiamo fare streaming quando l'origine dati non è nota? Voglio dire quando non abbiamo un URL per specificare su questa riga 'player.setDataSource (" http://usa8-vn.mixstream.net:8138 ");', quindi in questo caso come può v streaming radio..if Sai nething quindi per favore condividi .. – Shruti

+0

@Shruti, beh potresti chiederlo ogni volta che apri l'applicazione dal tuo sito web. – zvzej

3

Beh, se vi aspettate una barra di avanzamento, si ottiene deludente, questo è un corso d'acqua, che di default non ha tempo di porre fine è infinita. Informazioni sull'URL è possibile utilizzare il punto di montaggio nel server shoutcast2/icecast e/in shoutcast1.

0

In onResume o wrvr che vuoi! Incolla questo codice.

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(); 
     } 
    }); 

Nel manifest.xml aggiungere l'autorizzazione Internet.

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
Problemi correlati