Created
June 3, 2019 00:08
-
-
Save ardovic/e99d195b37bbe55ce63f355438ea65e3 to your computer and use it in GitHub Desktop.
Sample radio streaming implementation with MediaPlayer (Android Activity)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import android.media.AudioManager; | |
| import android.media.MediaPlayer; | |
| import android.os.AsyncTask; | |
| import android.support.v7.app.AppCompatActivity; | |
| import android.os.Bundle; | |
| import android.view.View; | |
| import android.widget.Button; | |
| import android.widget.CompoundButton; | |
| import android.widget.Toast; | |
| import android.widget.ToggleButton; | |
| import java.io.IOException; | |
| public class SampleRadioStreamingActivity extends AppCompatActivity { | |
| Button b_play; | |
| MediaPlayer mediaPlayer; | |
| String stream_rock = "http://stream.radioreklama.bg:80/radio1rock128"; | |
| String stream_pop = "http://stream.radiorecord.ru:8100/rr_aac"; | |
| String stream; | |
| Button b_1, b_2; | |
| boolean prepared = false; | |
| boolean started = false; | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.activity_main); | |
| b_1 = (Button) findViewById(R.id.b_1); | |
| b_2 = (Button) findViewById(R.id.b_2); | |
| b_2.setEnabled(false); | |
| b_play = (Button) findViewById(R.id.b_play); | |
| b_play.setEnabled(false); | |
| b_play.setText("SELECT STATION"); | |
| mediaPlayer = new MediaPlayer(); | |
| mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); | |
| b_1.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| stream = stream_rock; | |
| b_play.setText("LOADING"); | |
| new PlayerTask().execute(stream); | |
| b_1.setEnabled(false); | |
| } | |
| }); | |
| b_2.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| stream = stream_pop; | |
| b_play.setText("LOADING"); | |
| new PlayerTask().execute(stream); | |
| } | |
| }); | |
| b_play.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| if(started){ | |
| started = false; | |
| mediaPlayer.pause(); | |
| b_play.setText("PLAY"); | |
| } else { | |
| started = true; | |
| mediaPlayer.start(); | |
| b_play.setText("PAUSE"); | |
| } | |
| } | |
| }); | |
| } | |
| class PlayerTask extends AsyncTask<String, Void, Boolean> { | |
| @Override | |
| protected Boolean doInBackground(String... strings) { | |
| try { | |
| mediaPlayer.setDataSource(strings[0]); | |
| mediaPlayer.prepare(); | |
| prepared = true; | |
| } catch (IOException e) { | |
| e.printStackTrace(); | |
| Toast.makeText(SampleRadioStreamingActivity.this, "RADIO BUFFER FAILED!", Toast.LENGTH_SHORT).show(); | |
| } | |
| return prepared; | |
| } | |
| @Override | |
| protected void onPostExecute(Boolean aBoolean){ | |
| super.onPostExecute(aBoolean); | |
| b_play.setEnabled(true); | |
| b_play.setText("PLAY"); | |
| } | |
| } | |
| @Override | |
| protected void onPause() { | |
| super.onPause(); | |
| if(started){ | |
| mediaPlayer.pause(); | |
| } | |
| } | |
| @Override | |
| protected void onResume() { | |
| super.onResume(); | |
| if(started){ | |
| mediaPlayer.start(); | |
| } | |
| } | |
| @Override | |
| protected void onDestroy() { | |
| super.onDestroy(); | |
| if(prepared){ | |
| mediaPlayer.release(); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment