package com.example.zepplayer;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.PorterDuff;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
int currentIndex;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnPlay = findViewById(R.id.btnPlay);
Button btnNext = findViewById(R.id.btnNext);
Button btnPrevious = findViewById(R.id.btnPrevious);
TextView endTime = findViewById(R.id.endTime);
TextView startTime = findViewById(R.id.startTime);
SeekBar runMusic = findViewById(R.id.runMusic);
ArrayList<Integer> songs = new ArrayList<>();
songs.add(0,R.raw.music1);
songs.add(1,R.raw.music2);
songs.add(2,R.raw.music3);
songs.add(2,R.raw.music4);
songs.add(2,R.raw.music5);
mediaPlayer = MediaPlayer.create(getApplicationContext(),songs.get(currentIndex));
runMusic.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
if (b){
mediaPlayer.seekTo(i);
runMusic.setProgress(i);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
// SeekBar Time
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runMusic.setProgress(mediaPlayer.getCurrentPosition());
runMusic.setMax(mediaPlayer.getDuration());
}
}, 0, 800);
// SeekBar Time
// seekBar Time Update
String lastTime = makeTime(mediaPlayer.getDuration());
endTime.setText(lastTime);
final Handler handler = new Handler();
final int delay = 400;
handler.postDelayed(new Runnable() {
@Override
public void run() {
String currentTime = makeTime(mediaPlayer.getCurrentPosition());
startTime.setText(currentTime);
handler.postDelayed(this, delay);
}
},delay);
// seekBar Time Update
btnPlay.setOnClickListener(view -> {
if( mediaPlayer!=null && mediaPlayer.isPlaying()){
mediaPlayer.pause();
btnPlay.setBackgroundResource(R.drawable.btn_play);
}
else {
mediaPlayer.start();
btnPlay.setBackgroundResource(R.drawable.btn_pause);
}
});
btnNext.setOnClickListener(view -> {
if (mediaPlayer!=null){
btnPlay.setBackgroundResource(R.drawable.btn_pause);
}
if (currentIndex<songs.size()-1){
currentIndex++;
}else {
currentIndex= 0;
}
if (mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
mediaPlayer = MediaPlayer.create(getApplicationContext(),songs.get(currentIndex));
mediaPlayer.start();
String lastTime1 = makeTime(mediaPlayer.getDuration());
endTime.setText(lastTime1);
mediaPlayer.setOnCompletionListener(mediaPlayer -> btnNext.performClick());
});
btnPrevious.setOnClickListener(view -> {
if (mediaPlayer!=null){
btnPlay.setBackgroundResource(R.drawable.btn_pause);
}
if (currentIndex>0){
currentIndex--;
}else {
currentIndex=songs.size()-1;
}
if (mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
mediaPlayer = MediaPlayer.create(getApplicationContext(),songs.get(currentIndex));
mediaPlayer.start();
String lastTime1 = makeTime(mediaPlayer.getDuration());
endTime.setText(lastTime1);
});
mediaPlayer.setOnPreparedListener(mediaPlayer -> {
runMusic.setMax(mediaPlayer.getDuration());
mediaPlayer.start();
});
// create Time from seekBar
}
public String makeTime (int duration)
{
String time = "";
int minute = duration/1000/60;
int second = duration/1000%60;
time+=minute+":";
if (second<10)
{
time+="0";
}
time+=second;
return time;
}
}
// create Time from seekBar