2014-03-14 10 views
6

Die seekTo() Methode funktioniert gut, wenn mediaPlayer spielt. Wenn mediaPlayer pausiert ist, wenn ich eine Position suche und start() rufe, beginne es einfach dort zu spielen, wo es pausiert hat.Android mediaPlayer seekTo funktioniert nicht, wenn pausiert

Mein Code ist wie folgt, im Logcat kann ich es suchen.

@Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 
     if(player == null || player.mediaPlayer == null){ 
      return; 
     } 
     Log.e("player status", "status is " + PlayerStatusCache.playerStatus); 

     if(durationProgress < player.mediaPlayer.getDuration()){ 
      player.mediaPlayer.seekTo(durationProgress); 
      Log.e("player", "seeking"); 
     } else { 
      player.mediaPlayer.seekTo(player.mediaPlayer.getDuration() - 1000); 
     } 
    } 

Antwort

0

Aus irgendwelchen Gründen bei einigen Geräten: SystemClock.sleep(200) ist notwendig, weil onSeekComplete(MediaPlayer arg0) zu früh vom Spieler aufgerufen wird, bevor seekTo wirklich abgeschlossen ist.

mMediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { 
     @Override 
     public void onSeekComplete(MediaPlayer arg0) { 
      Log.d(TAG, "onSeekComplete() current pos : " + arg0.getCurrentPosition()); 
      SystemClock.sleep(200); 
      mMediaPlayer.start(); 
     } 
    }); 
    try { 
     mMediaPlayer.seekTo(mCurrentPos); 
    } catch (IllegalStateException e){ 
     Log.d(TAG, e.getLocalizedMessage(), e); 
    } 
Verwandte Themen