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.