How to run Android MediaPlayer

33 views Asked by At

I want to run Media Player.

How does the seekBar enhance user interaction in the provided Android media player application? Briefly explain its role in visualizing playback progress and facilitating intuitive control over audio playback.

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import java.sql.Time;
import java.util.concurrent.TimeUnit;

import java.util.concurrent.TimeUnit;

public class MainActivity extends AppCompatActivity {

    private Button start_bt, stop_bt, forward_bt, backward_bt;
    private TextView tx1, tx2, tx3;
    private SeekBar seek;
    private MediaPlayer mediaPlayer;
    private double startTime = 0;
    private double finalTime = 0;
    private int forwardTime = 5000;
    private int backwardTime = 5000;
    public static int OneTimeOnly = 0;
    private Handler myHandler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start_bt = (Button) findViewById(R.id.button);
        stop_bt = (Button) findViewById(R.id.button2);
        forward_bt = (Button) findViewById(R.id.button3);
        backward_bt = (Button) findViewById(R.id.button4);
        seek = (SeekBar) findViewById(R.id.seekBar);
        tx1 = (TextView) findViewById(R.id.tx1);
        tx2 = (TextView) findViewById(R.id.tx2);
        tx3 = (TextView) findViewById(R.id.tx3);

        tx3.setText("Song.mp3");

        mediaPlayer = MediaPlayer.create(this, R.raw.song);

        seek.setClickable(false);
        stop_bt.setEnabled(false);

        start_bt.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Playing", Toast.LENGTH_SHORT).show();
                mediaPlayer.start();

                finalTime = mediaPlayer.getDuration();
                startTime = mediaPlayer.getCurrentPosition();

                if(OneTimeOnly == 0)
                {
                    seek.setMax((int)finalTime);
                    OneTimeOnly = 1;
                }

                tx2.setText( String.format("%d min, %d sec",
                        TimeUnit.MILLISECONDS.toSeconds((long)finalTime),
                        TimeUnit.MILLISECONDS.toMinutes((long)finalTime)-
                        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)finalTime))));

                tx1.setText( String.format("%d min, %d sec",
                        TimeUnit.MILLISECONDS.toSeconds((long)startTime),
                        TimeUnit.MILLISECONDS.toMinutes((long)startTime)-
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)startTime))));

                seek.setProgress((int)startTime);
                myHandler.postDelayed(UpdateSongTime, 100);
                start_bt.setEnabled(false);
                stop_bt.setEnabled(true);
            }
        });

        stop_bt.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Toast.makeText(getApplicationContext(), "Pausing", Toast.LENGTH_SHORT).show();
                mediaPlayer.pause();

                start_bt.setEnabled(true);
                stop_bt.setEnabled(false);
            }
        });

        forward_bt.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                int temp = (int)startTime;

                if((temp + forwardTime)<=finalTime)
                {
                    startTime = startTime+ forwardTime;
                    mediaPlayer.seekTo((int)startTime);
                    Toast.makeText(getApplicationContext(), "Forwarded 5 seconds", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Can't Forward", Toast.LENGTH_SHORT).show();
                }
            }
        });

        backward_bt.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                int temp = (int)startTime;

                if((temp - backwardTime)>0)
                {
                    startTime = startTime - backwardTime;
                    mediaPlayer.seekTo((int)startTime);
                    Toast.makeText(getApplicationContext(), "Backward 5 seconds", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Can't Backward", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

    private Runnable UpdateSongTime = new Runnable() {
        @Override
        public void run() {
            startTime = mediaPlayer.getCurrentPosition();
            seek.setProgress((int) startTime);
            myHandler.postDelayed(this, 100);
        }
    };
}

This is what I tried and I am getting no error. How does the seekBar enhance user interaction in the provided Android media player application? Briefly explain its role in visualizing playback progress and facilitating intuitive control over audio playback.

0

There are 0 answers