package com.piterwilson.mp3streamplayer; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import com.piterwilson.audio.MP3RadioStreamDelegate; import com.piterwilson.audio.MP3RadioStreamPlayer; public class MainActivity extends Activity implements MP3RadioStreamDelegate { private Button mPlayButton; private Button mStopButton; private ProgressBar mProgressBar; MP3RadioStreamPlayer player; private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPlayButton = (Button) this.findViewById(R.id.button1); mPlayButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { play(); } }); mStopButton = (Button) this.findViewById(R.id.button2); mStopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { stop(); } }); mProgressBar = (ProgressBar) this.findViewById(R.id.progressBar1); showGUIStopped(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private void play() { if(player != null) { player.stop(); player.release(); player = null; } player = new MP3RadioStreamPlayer(); player.setUrlString("http://icecast.omroep.nl:80/radio1-sb-mp3"); player.setDelegate(this); showGUIBuffering(); try { player.play(); } catch (IOException e) { e.printStackTrace(); } } private void stop() { player.stop(); } private void showGUIBuffering() { mProgressBar.setVisibility(View.VISIBLE); mPlayButton.setEnabled(false); mStopButton.setEnabled(false); } private void showGUIPlaying() { mProgressBar.setVisibility(View.GONE); mPlayButton.setEnabled(false); mStopButton.setEnabled(true); } private void showGUIStopped() { mProgressBar.setVisibility(View.GONE); mPlayButton.setEnabled(true); mStopButton.setEnabled(false); } /**************************************** * * Delegate methods. These are all fired from a background thread so we have to call any GUI code on the main thread. * ****************************************/ @Override public void onRadioPlayerPlaybackStarted(MP3RadioStreamPlayer player) { Log.i(TAG, "onRadioPlayerPlaybackStarted");; this.runOnUiThread(new Runnable(){ @Override public void run() { showGUIPlaying(); } }); } @Override public void onRadioPlayerStopped(MP3RadioStreamPlayer player) { this.runOnUiThread(new Runnable(){ @Override public void run() { showGUIStopped(); } }); } @Override public void onRadioPlayerError(MP3RadioStreamPlayer player) { this.runOnUiThread(new Runnable(){ @Override public void run() { showGUIStopped(); } }); } @Override public void onRadioPlayerBuffering(MP3RadioStreamPlayer player) { this.runOnUiThread(new Runnable(){ @Override public void run() { showGUIBuffering(); } }); } }