Android 使音频播放器可点击搜索栏

Android 使音频播放器可点击搜索栏,android,audio,Android,Audio,下面是我的音频播放器的seekbar代码。目前,我可以移动它,但一旦我抬起手指,它又回到原来的歌曲时长。如何通过seekbar导航到歌曲的任何时间 //initialize seekbar seekbar = (SeekBar)findViewById(R.id.seekBar1); seekbar.setClickable(false); //this should be set to true, correct? 下面是seekbar涉及的地方,在播放按钮onclick中 public v

下面是我的音频播放器的seekbar代码。目前,我可以移动它,但一旦我抬起手指,它又回到原来的歌曲时长。如何通过seekbar导航到歌曲的任何时间

//initialize seekbar
seekbar = (SeekBar)findViewById(R.id.seekBar1);
seekbar.setClickable(false); //this should be set to true, correct?
下面是seekbar涉及的地方,在播放按钮onclick中

public void play(View view){
    mediaPlayer.start();
    finalTime = mediaPlayer.getDuration();
    startTime = mediaPlayer.getCurrentPosition();
    if(oneTimeOnly == 0){
        seekbar.setMax((int) finalTime);
        oneTimeOnly = 1;
    }

    seekbar.setProgress((int)startTime);
}
它还涉及到UpdateSongTime方法

private Runnable UpdateSongTime = new Runnable() {
    public void run() {
        startTime = mediaPlayer.getCurrentPosition();
        startTimeField.setText(String.format("%d:%02d",
                        TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                        TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
                                        toMinutes((long) startTime)))
        );
        seekbar.setProgress((int)startTime);
        myHandler.postDelayed(this, 100);
    }
};
您需要实现。当您使用SeekBar执行某些操作时,将调用这些接口的方法。例如,您说要根据最终用户抬起手指的位置将曲目播放移动到特定时间。覆盖
onStartTrackingTouch(SeekBar-SeekBar)
以暂停音乐,并覆盖
onStopTrackingTouch(SeekBar-SeekBar)
以在需要时再次启动音乐


注意:搜索栏作为参数传递,以便您检查用户何时抬起手指。

实现SeekBar.onseekbarchangestener。此接口包含三个可用于管理音频播放器的回调:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  // MediaPlayer.seekTo(progress)
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
  // MediaPlayer.pause() 
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
  // MediaPlayer.seekTo(seekBar.getProgress())
}

此外,您可能希望让您的UpdateSongRunnable在
onStartTrackingTouch()
onStopTrackingTouch()
之间暂停更新,否则当您的手指放在seekbar上时,它将继续尝试更新。

是否需要设置此
seekbar.setClickable(false)为真?在xml中,我只为seekbar指定了id,没有onclick。我需要onclick吗?不需要onclick,您不需要设置seekbar.clickable为true或false,默认设置可以正常工作。