I just want to create a very basic application in android that plays a audio file based on a URL input.I have made the Application and I would like it to be reviewed based on good programming practices.This is the first time that I have used the Media Player class it works as I would like it to but I am sure my code can be optimized and improved. Following is my code for the MediaPlayerActivity.class that I have built:-
public class MediaPlayerActivity extends AppCompatActivity { TextView tvArtistName, tvSongName; ImageView ivPlay, ivPrev, ivNext, ivPause; MediaPlayer mediaPlayer = new MediaPlayer(); private double startTime = 0; private double finalTime = 0; private Handler myHandler = new Handler(); ; private int forwardTime = 5000; private int backwardTime = 5000; private SeekBar seekbar; public static int oneTimeOnly = 0; ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media_player); actionBar = getSupportActionBar(); actionBar.hide(); tvArtistName = (TextView) findViewById(R.id.tvArtistName); tvSongName = (TextView) findViewById(R.id.tvSongName); ivPlay = (ImageView) findViewById(R.id.iv_play); ivPause = (ImageView) findViewById(R.id.iv_pause); ivNext = (ImageView) findViewById(R.id.iv_next); ivPrev = (ImageView) findViewById(R.id.iv_prev); seekbar = (SeekBar) findViewById(R.id.seekBar); seekbar.setClickable(false); Intent intent = getIntent(); if (intent.getExtras() != null) { final String url = intent.getStringExtra("url"); String song = intent.getStringExtra("song"); String artist = intent.getStringExtra("artist"); tvArtistName.setText(artist); tvSongName.setText(song); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.parse(url)); ivPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Toast.makeText(getApplicationContext(), "Playing sound", Toast.LENGTH_SHORT).show(); if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.reset(); } mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { mediaPlayer.stop(); mediaPlayer.reset(); } }); mediaPlayer.start(); finalTime = mediaPlayer.getDuration(); startTime = mediaPlayer.getCurrentPosition(); if (oneTimeOnly == 0) { seekbar.setMax((int) finalTime); oneTimeOnly = 1; } seekbar.setProgress((int) startTime); myHandler.postDelayed(UpdateSongTime, 100); ivPlay.setVisibility(View.GONE); ivPause.setVisibility(View.VISIBLE); } }); ivPause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getApplicationContext(), "Pausing sound", Toast.LENGTH_SHORT).show(); mediaPlayer.pause(); ivPause.setVisibility(View.GONE); ivPlay.setVisibility(View.VISIBLE); } }); ivNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int temp = (int) startTime; if ((temp + forwardTime) <= finalTime) { startTime = startTime + forwardTime; mediaPlayer.seekTo((int) startTime); //Toast.makeText(getApplicationContext(),"You have Jumped forward 5 seconds",Toast.LENGTH_SHORT).show(); } else { //Toast.makeText(getApplicationContext(),"Cannot jump forward 5 seconds",Toast.LENGTH_SHORT).show(); } } }); ivPrev.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int temp = (int) startTime; if ((temp - backwardTime) > 0) { startTime = startTime - backwardTime; mediaPlayer.seekTo((int) startTime); //Toast.makeText(getApplicationContext(),"You have Jumped backward 5 seconds",Toast.LENGTH_SHORT).show(); } else { //Toast.makeText(getApplicationContext(),"Cannot jump backward 5 seconds",Toast.LENGTH_SHORT).show(); } } }); } } @Override public void onBackPressed() { super.onBackPressed(); mediaPlayer.release(); mediaPlayer = null; seekbar.setProgress(0); startTime = 0; finalTime = 0; } private Runnable UpdateSongTime = new Runnable() { public void run() { if (mediaPlayer!=null) { startTime = mediaPlayer.getCurrentPosition(); seekbar.setProgress((int) startTime); myHandler.postDelayed(this, 100); } } }; }
Any help for improvement is appreciated.Thank you.