我当时在一个带有搜索栏的非常简单的音乐播放器中工作。但是我在播放音乐时遇到了问题,它无法每秒正常工作-倒退一会儿,然后像车子一样再次出现。
我知道为什么,但是我解决不了。
当进度条向前移动时,音乐将重新校准,反之亦然;当音乐向前移动时,进度条将重新校准。 可能是因为它每次回退。 但是我尝试了几件事,仍然有同样的问题。
另一个问题是,当音乐暂停时,进度条会朝相反的方向移动,直到达到零为止。它不会停留在休息前的地方。
完整代码:
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private boolean bool = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.seekBar = (SeekBar) findViewById(R.id.sound_bar);
this.mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.music);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
seekBar.setProgress(mediaPlayer.getCurrentPosition() * seekBar.getMax() / mediaPlayer.getDuration());
}
}, 500, 500);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mediaPlayer.seekTo(seekBar.getProgress() * mediaPlayer.getDuration() / seekBar.getMax());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
public void playSound(View view) {
Button button = (Button) view;
if(bool) {
mediaPlayer.pause();
bool = false;
button.setText("Jouer le son");
} else {
mediaPlayer.start();
bool = true;
button.setText("Mettre en pause");
}
}
@Override
protected void onPause() {
super.onPause();
mediaPlayer.pause();
}
@Override
protected void onStart() {
super.onStart();
if(bool) {
mediaPlayer.start();
}
}
}