所以,我有 MediaPlayer 的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meditatie1);
getSupportActionBar().setTitle("Mindfulness");
ColorDrawable colorDrawable
= new ColorDrawable(Color.parseColor("#006600"));
getSupportActionBar().setBackgroundDrawable(colorDrawable);
play_btn=findViewById(R.id.playButton);
back_btn=findViewById(R.id.rewindButton);
forward_btn=findViewById(R.id.forwardButton);
stop_btn=findViewById(R.id.pauseButton);
time_txt=findViewById(R.id.textView2);
seekBar=findViewById(R.id.seekBar);
mediaPlayer= MediaPlayer.create(this, R.raw.mindfulness_pentru_incepatori );
seekBar.setClickable(false);
// adding functionalities for the buttons
play_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PlayMusic();
}
private void PlayMusic() {
mediaPlayer.start();
finalTime=mediaPlayer.getDuration();
startTime=mediaPlayer.getCurrentPosition();
if(oneTimeOnly==0)
{
seekBar.setMax((int) finalTime);
oneTimeOnly=1;
}
time_txt.setText(String.format(
"%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
TimeUnit.MILLISECONDS.toSeconds((long) finalTime)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)finalTime))
));
seekBar.setProgress((int) startTime);
handler.postDelayed(UpdateSongTime, 100);
}
//creating runnable
private Runnable UpdateSongTime=new Runnable() {
@Override
public void run() {
startTime=mediaPlayer.getCurrentPosition();
time_txt.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime)
-TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime))));
seekBar.setProgress((int) startTime);
handler.postDelayed(this, 100);
}
};
});
stop_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mediaPlayer.pause();
}
});
forward_btn.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);
} else {
Toast.makeText(Meditatie1.this, "can't make jump", Toast.LENGTH_SHORT).show();
}
}
});
back_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp= (int) startTime;
if((temp-backTime)>0)
{
startTime=startTime-backTime;
mediaPlayer.seekTo((int) startTime);
} else {
Toast.makeText(Meditatie1.this, "Can't go back", Toast.LENGTH_SHORT).show();
}
}
});
}
我的第一个问题是,当我按下手机的后退按钮时,媒体仍在播放。所以我添加了这个:
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}