2015-03-02 114 views
0

下面是我的音頻播放器的seekbar的代碼。目前,我可以將其移動,但是一旦我擡起手指,它就會再次返回到原​​始歌曲的持續時間。如何通過搜索欄導航到歌曲的任何時間?使音頻播放器seekbar可點擊

//initialize seekbar 
seekbar = (SeekBar)findViewById(R.id.seekBar1); 
seekbar.setClickable(false); //this should be set to true, correct? 

下面就是搜索條參與,在播放按鈕的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); 
    } 
}; 

回答

0

實現SeekBar.OnSeekBarChangeListener。此接口包含你可以用來管理你的音頻玩家將3個回調:

@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上。

+0

我需要設置這個'seekbar.setClickable(false);'爲真?在xml中,我只指定了seekbar的id,沒有onclick。我需要一個onclick? – 2015-03-02 17:25:18

+0

不需要onClick,你不需要將seekbar.clickable設置爲true或false,默認設置工作正常。 – 2015-03-02 18:08:40

0

您需要實現OnSeekBarChangeListener。當您使用SeekBar執行某些操作時,將調用這些接口的方法。例如,您說根據最終用戶擡起手指的位置,您想要將曲目播放移至特定時間。覆蓋onStartTrackingTouch (SeekBar seekBar)(如果您願意)可以暫停音樂和onStopTrackingTouch (SeekBar seekBar)以在您所需的時間重新開始播放音樂。

注意:搜索欄作爲參數傳遞,以便檢查用戶什麼時候擡起手指。