Android 使音频播放器可点击搜索栏
下面是我的音频播放器的seekbar代码。目前,我可以移动它,但一旦我抬起手指,它又回到原来的歌曲时长。如何通过seekbar导航到歌曲的任何时间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
//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,默认设置可以正常工作。