【发布时间】:2018-12-29 01:07:43
【问题描述】:
-
我在一个非常简单的带有搜索栏的音乐播放器中工作。但是我在播放音乐时遇到了问题,它不能每秒钟都正常工作 - 它倒退了一段时间,然后又像一辆马车一样继续存在。
我知道为什么,但我无法解决。
当进度条向前移动时,音乐会重新校准,反之亦然,当音乐向前移动时,进度条会重新校准。 大概就是因为这样,每次回去吧。 但是我尝试了几件事,仍然有同样的问题。
另一个问题是,当音乐暂停时,进度条会向相反的方向移动,直到达到零。它不会停留在休息前的位置。
完整代码:
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();
}
}
}
【问题讨论】: