Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package www.ariwibawa.my.id.musicplayer;
- import android.content.res.AssetFileDescriptor;
- import android.media.MediaMetadataRetriever;
- import android.net.Uri;
- import android.os.Bundle;
- import android.media.MediaPlayer;
- import android.provider.MediaStore;
- import android.util.Log;
- import android.view.View;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import android.os.Handler;
- import java.util.concurrent.TimeUnit;
- import androidx.appcompat.app.AppCompatActivity;
- 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.music);
- MediaMetadataRetriever meta = new MediaMetadataRetriever();
- final AssetFileDescriptor afd=getResources().openRawResourceFd(R.raw.music);
- 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("Nokia Ring Tone.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