首页 > 解决方案 > Scrub 搜索栏在运行时出现问题

问题描述

嘿,我在 android 上创建了一个简单的应用程序,它只播放和暂停一首歌曲,并有一个音量搜索栏和一个擦洗搜索栏。一切正常,但在播放歌曲时,歌曲卡住或稍有停顿,这发生在我在计时器中设置的时间段之后,请帮我解决它。这是我的代码:

public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer;
AudioManager audioManager;
public void play(View view){
    mediaPlayer.start();
}
public void pause(View view){
    mediaPlayer.pause();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    mediaPlayer = MediaPlayer.create(this, R.raw.gaana);
    SeekBar volumeControl = (SeekBar) findViewById(R.id.volumeSeekBar);

    volumeControl.setMax(maxVolume);
    volumeControl.setProgress(currentVolume);
    volumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,progress,0);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });
    SeekBar scrubSeekBar = (SeekBar) findViewById(R.id.scrubSeekbar);
    scrubSeekBar.setMax(mediaPlayer.getDuration());
    scrubSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            mediaPlayer.seekTo(progress);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });
    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            scrubSeekBar.setProgress(mediaPlayer.getCurrentPosition());
        }
    },0,1000);
}

}

标签: javaandroid

解决方案


推荐阅读