2015-09-27 31 views
1

我當時在一個帶有搜索欄的非常簡單的音樂播放器中工作。 我可以讓它工作,但是我在播放音樂時遇到了問題,它每秒鐘都不能正常工作 - 它倒退了一段時間,然後仍然像是一輛越野車。使用Android Studio的音樂播放器Seekbar

這裏是全碼:

private MediaPlayer mediaPlayer; 
private Button button; 
private TextView textView; 
private SeekBar seek; 
private Handler mHandler = new Handler(); 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    button = (Button)findViewById(R.id.button); 
    textView = (TextView)findViewById(R.id.text); 
    seek = (SeekBar)findViewById(R.id.seek); 

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.threedays); 


    MainActivity.this.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 



      if(mediaPlayer != null){ 
       int mCurrentPosition = mediaPlayer.getCurrentPosition()/1000; 
       seek.setProgress(mCurrentPosition); 
      } 
      mHandler.postDelayed(this, 1000); 
     } 
    }); 


    seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 


      seekBar.setMax(mediaPlayer.getDuration()/1000); 
      textView.setText(progress + "/" + seekBar.getMax()); 
      mediaPlayer.seekTo(progress*1000); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 


    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 

      pause(); 

     } 
    }); 


    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (mediaPlayer.isPlaying()) { 
       pause(); 
      } else { 

       start(); 
      } 

     } 
    }); 
} 

public void start(){ 
    if(mediaPlayer!=null) { 
     mediaPlayer.start(); 
     button.setText("Pause"); 
    } 
} 

public void pause(){ 
    if(mediaPlayer!=null) { 
     mediaPlayer.pause(); 
     button.setText("Play"); 
    } 
} 

@Override 
protected void onDestroy() { 

    if(mediaPlayer!=null && mediaPlayer.isPlaying()) { 
     mediaPlayer.pause(); 
     mediaPlayer.release(); 
     mediaPlayer = null; 
    } 

    super.onDestroy(); 
} 

謝謝:)

回答

2

嘗試在此代碼seek.setOnSeekBarChangeListener

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
{ 
    seekBar.setMax(mediaPlayer.getDuration()/1000); 
    textView.setText(progress + "/" + seekBar.getMax()); 

    if(fromUser) 
    { 
     mediaPlayer.seekTo(progress*1000); 
    } 
}