0
이동 표시를 위해 탐색 표시 줄을 사용하는 오디오 스트리밍 앱에서 작업 중이지만 강제로 검색 막대 위치를 변경하면 노래와 동기화 할 수 없습니다 미디어 플레이어에서 재생.탐색 막대가 안드로이드의 미디어 플레이어와 동기화되지 않았습니다.
코드 :
seekBarObj
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
/*
* mHandler.removeCallbacks(mUpdateTimeTask); String[]
* duration =
* lstSongDetails.get(Integer.parseInt(currentPosition
*)).getDuration().split(":"); int intDuration =
* Integer
* .parseInt(duration[0])*60*1000+Integer.parseInt
* (duration[1]);
*
* int currentPosition =
* utils.progressToTimer(seekBar.getProgress(),
* mediaPlayerObj.getDuration());
*
* // forward or backward to certain seconds
* mediaPlayerObj.seekTo(currentPosition);
*/
// update timer progress again
// updateProgressBar();
// mHandler.removeCallbacks(mUpdateTimeTask);
//seekBarObj.setMax(mediaPlayerObj.getDuration());
mHandler.removeCallbacks(mUpdateTimeTask);
//seekBarObj.setProgress(seekBar.getProgress());
long position = (long)mediaPlayerObj.getDuration() * (seekBarObj.getProgress())/1000;
mediaPlayerObj.seekTo((int)position);
}
public void onStartTrackingTouch(SeekBar seekBar) {
//mHandler.removeCallbacks(mUpdateTimeTask);
//mediaPlayerObj.seekTo(seekBar.getProgress());
/*long position = (long)mediaPlayerObj.getDuration() * (seekBarObj.getProgress())/1000;
mediaPlayerObj.seekTo((int)position);*/
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
/*
* mHandler.removeCallbacks(mUpdateTimeTask);
* seekBarObj.setProgress(seekBar.getProgress());
* mediaPlayerObj.seekTo(seekBar.getProgress());
* updateProgressBar();
*/
}
});
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
long totalDuration = mediaPlayerObj.getDuration();
currentDuration = mediaPlayerObj.getCurrentPosition();
tvSongDurationLeft.setText(""
+ utils.milliSecondsToTimer(currentDuration));
int progress = (int) (utils.getProgressPercentage(currentDuration,
totalDuration));
seekBarObj.setProgress((int) (long) currentDuration);
mHandler.postDelayed(this, 100);
}
};