Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package nofieanggraeni.blogspot.com.musicplayer;
- import androidx.appcompat.app.AppCompatActivity;
- import android.content.res.AssetFileDescriptor;
- import android.media.MediaMetadataRetriever;
- import android.media.MediaPlayer;
- import android.os.Bundle;
- import android.os.Handler;
- import android.util.Log;
- import android.view.View;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import java.util.concurrent.TimeUnit;
- public class MainActivity extends AppCompatActivity {
- private MediaPlayer mediaPlayer;
- private TextView songName, songDuration;
- private SeekBar seekBar;
- private double timeStart =0, finalTime =0;
- private int forwardTime = 20000, backwardTime = 20000;
- private Handler durationHandler = new Handler();
- private boolean swtch = false;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- songName = (TextView) findViewById(R.id.songName);
- songDuration = (TextView) findViewById(R.id.songDuration);
- mediaPlayer = MediaPlayer.create(this, R.raw.music1);
- MediaMetadataRetriever meta = new MediaMetadataRetriever();
- final AssetFileDescriptor afd= getResources().openRawResourceFd(R.raw.music1);
- meta.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),afd.getLength());
- String music_duration = meta.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
- finalTime = Long.parseLong(music_duration);
- Log.v("musicDuration", "Duration :" +music_duration);
- seekBar = (SeekBar) findViewById(R.id.seekBar);
- songName.setText("Virgoun - Bukti.mp3");
- seekBar.setMax((int) finalTime);
- seekBar.setOnSeekBarChangeListener(new yourListener());
- seekBar.setClickable(false);
- }
- private class yourListener implements SeekBar.OnSeekBarChangeListener {
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
- if (swtch){
- mediaPlayer.seekTo(progress);
- }
- }
- public void onStartTrackingTouch(SeekBar seekBar){
- swtch = true;
- }
- public void onStopTrackingTouch(SeekBar seekBar){
- swtch = false;
- }
- }
- private Runnable updateSeekBarTime = new Runnable() {
- @Override
- public void run() {
- timeStart = mediaPlayer.getCurrentPosition();
- seekBar.setProgress((int) timeStart);
- double timeRemaining = finalTime-timeStart;
- songDuration.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining), TimeUnit.MILLISECONDS.toSeconds((long) timeRemaining)- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) timeRemaining))));
- durationHandler.postDelayed(this, 1000);
- }
- };
- public void play(View view){
- mediaPlayer.start();
- timeStart = mediaPlayer.getCurrentPosition();
- seekBar.setProgress((int) timeStart);
- durationHandler.postDelayed(updateSeekBarTime, 100);
- }
- public void pause(View view){
- mediaPlayer.pause();
- }
- public void forward(View view){
- timeStart = timeStart + forwardTime;
- mediaPlayer.seekTo((int) timeStart);
- }
- public void backforward(View view){
- timeStart = timeStart - backwardTime;
- mediaPlayer.seekTo((int) timeStart);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment