2012-12-04 2 views
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); 
     } 
    }; 

답변

1

이 링크 Media Player Example with Seek Bar를 참조하십시오. 노래 길이에 따라 탐색 막대 진행률을 늘리는 방법을 계산하는 수식이 표시됩니다.

관련 문제