2010-10-14 18 views
5

Tôi có một số mã Android để phát trực tuyến tệp âm thanh từ internet và phát luồng sau 10 giây.Làm cách nào tôi có thể sử dụng OnSeekBarChangeListener của SeekBar để tìm kiếm một điểm cụ thể trong đối tượng MediaPlayer?

Tôi đang sử dụng SeekBar để xem trạng thái đệm và trạng thái phát. Tôi muốn phát âm thanh bắt đầu từ giữa luồng đệm. Vì vậy, tôi di chuyển điểm SeekBar đến giữa, nhưng tôi không thể phát âm thanh từ giữa; nó sẽ quay trở lại và bắt đầu từ đầu. Làm thế nào tôi có thể nhận được vị trí tìm kiếm và làm thế nào tôi có thể phát âm thanh từ vị trí cụ thể đó?

Đây là mã SeekBar của tôi. Làm thế nào tôi có thể làm cho mã này sử dụng OnSeekBarChangeListener đúng cách?

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

    @Override 
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
     // TODO Auto-generated method stub 
     if (arg2 && mediaPlayer.isPlaying()) { 
      //myProgress = oprogress; 
      arg1=mediaPlayer.getCurrentPosition(); 
      mediaPlayer.seekTo(arg1); 
     } 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
    } 

}); 

Trả lời

1
arg1=mediaPlayer.getCurrentPosition(); 
mediaPlayer.seekTo(arg1); 

Bạn đang buộc người chơi phải tìm đến vị trí hiện tại, chứ không phải vị trí phía retuned bởi Seekbar

Tháo dòng: arg1=mediaPlayer.getCurrentPosition(); và nó sẽ làm việc. Tất nhiên sau khi MediaPlayer.prepare() đặt SeekBar.setMax(MediaPlayer.getDuration()), vì vậy việc tìm kiếm sẽ chính xác.

0

Tôi nghĩ bạn phải tạo một chuỗi ... Tôi có một số mã được cung cấp bên dưới mà bạn có thể thử triển khai.

public void run() { 
    try 
    { 
     while(song1.getDuration()!=song1.getCurrentPosition()) 
     { 
      skbar.setProgress(song1.getCurrentPosition()); 
      //bStop.setText(song1.getCurrentPosition()); 
     } 
     if (song1.getDuration()==song1.getCurrentPosition()) 
      Log.v("log","Sanket"); 
     t.suspend(); 
    } 
    catch (Exception e) 
    { 
     Log.e("log",e.toString()); 
    } 
} 
Các vấn đề liên quan