2016-08-26 10 views
0

音楽ストリーミングアプリを使用しています。 Spotifyから曲を取得した後、私はMediaPlayerを使ってコントロールを処理します。ここでなぜMediaPlayer.getCurrentPoition()は常にAndroidで同じ値を返しますか?

は、私が働いているコードの一部です:

public class LocalPlayerController implements MediaPlayer.OnCompletionListener, SeekBar.OnSeekBarChangeListener { 

//... 
    private LocalPlayerController(){ 
     if(player==null) player = new MediaPlayer(); 
    } 

    //... 

    public void play(String path,int songIndex){ 
     if(player!=null) player.stop(); 
     player = new MediaPlayer(); 
     player.setOnCompletionListener(this); 
     currentSongIndex = songIndex; 
     try { 
      player.reset(); 
      player.setDataSource(path); 

      player.prepare(); 
      player.start(); 

     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    //... 

    @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      if (fromUser){ 
      player.seekTo(player.getCurrentPosition()+progress*1000); 
     } 
    } 

//... 
} 

これまでのところ、それはよく、私はそれで投げるが、私はMediaPlayer.getCurrentPosition(呼び出すときに音楽を再生し)、それは同じ値を返します。毎回、音楽が始まってからそれがあった時代に合わせて更新すると思います。 MediaPlayer.seekTo()を呼び出すには、その値を変更する必要があります。

何が起こっているかなぜ進歩は更新されませんか?

+0

EHMはあなたがプログレスバーに応じて、それを追求するために、これを行うにはしたくないだろう、それを呼び出すのではなく、onPreparedListener実装内部player.start()を呼び出します* progress/100); 'progress maxは100です –

+0

私は取得したオブジェクトソングに応じてプログレスバーの最大長を設定します。 – chntgomez

+0

それはちょうど 'player.seekTo(progress);'です。同期しているので現在の位置は必要ありません –

答えて

0

解決済み。 )( `player.seekTo(mediaPlayer.getDuration:

私は明示的に

関連する問題