Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Online radio streaming app for Android

I'm building an Android app that will stream several radio stations from a Latin Country, there is like 10 stations that I know can be played in android, I got the URL's from them and actually made them work using this tutorial (link removed, because it is dead) but the problem I have is that it plays for several seconds and then stops it keeps loading but does not restart the streaming, my questions:

  • If someone has worked with this tutorial can explain me how to make it stream constantly with out stopping.
  • Is there an easier way to stream radio audio? this tutorial seems kind of old, is there a newer tutorial or a newer code sample to study or use?
  • Can someone send me the right way?
like image 768
zvzej Avatar asked Jun 08 '11 18:06

zvzej


People also ask

What is the best free radio app for my phone?

Radio FM. According to many, Radio FM is the best radio app for Android users. App users have access to FM, AM, music shows, live news, weather, sports updates, and podcasts. The navigation between favorites, country lists, and recently played songs is easy and quick.

Can I listen to Internet radio on my phone?

iHeartRadio (free - iOS|Android) is an old favorite of mine that lets you stream radio from over 1,500 live radio stations or create custom stations based on a song or artist. The best thing about it, though, is that your custom stations are completely ad-free.


2 Answers

So I found this sample and it works for me, here it is if you have the same issue:

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 the XML (main.xml) code:

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

and the android manifest:

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

like image 139
zvzej Avatar answered Sep 21 '22 10:09

zvzej


Well, if you expect a progress bar, you get disapointing, this is a stream, which by default has no time to end is endless. About the URL you can use the mount point in shoutcast2/icecast server and the / in the shoutcast1.

like image 20
César Araújo Avatar answered Sep 18 '22 10:09

César Araújo