【问题标题】:Music player with Seekbar (Android Studio)带有 Seekbar 的音乐播放器 (Android Studio)
【发布时间】: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();
    }
}

}

【问题讨论】:

    标签: java android


    【解决方案1】:

    也许使用另一个线程来控制搜索栏会有所帮助。

    看看this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多