1. 程式人生 > >音樂播放與進度拖拽原理

音樂播放與進度拖拽原理

    public class MainActivity extends Activity {

    private MediaPlayer player;
    private SeekBar sb;
    private Timer timer;
    private TimerTask task;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb = (SeekBar) findViewById(R.id.sb);

        timer = new
Timer(); task = new TimerTask() { public void run() { if(player!=null&&player.isPlaying()){ //進度條當前位置為音樂的播放位置 int CurrentPosition = player.getCurrentPosition(); //進度條的最大值為音樂的總長度 int
max = player.getDuration(); sb.setMax(max); sb.setProgress(CurrentPosition); } } }; //設定播放時進度條seekbar跟著移動 timer.schedule(task, 500,500); //設定拖拽進度條時,播放音樂改變 sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override
public void onStopTrackingTouch(SeekBar seekBar) { if( player!=null ){ int currentPosition = seekBar.getProgress(); player.seekTo(currentPosition); } } public void onStartTrackingTouch(SeekBar seekBar) { } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); } public void play(View view){ try { if(player==null){ player = new MediaPlayer(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); player.setDataSource("/mnt/sdcard/a.mp3"); player.prepare(); player.start(); } } catch (Exception e) { e.printStackTrace(); } } public void pause(View view){ if(player!=null&&player.isPlaying()){ player.pause(); } } public void resume(View view){ if(player!=null){ player.start(); } } public void restart(View view){ try { if(player!=null&&player.isPlaying()){ player.reset(); player.setDataSource("/mnt/sdcard/a.mp3"); player.prepare(); player.start(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void stop(View view){ if(player!=null&&player.isPlaying()){ player.stop(); player=null; } } @Override protected void onDestroy() { if(timer != null && task != null){ timer.cancel(); timer = null; task.cancel(); task = null; } if(player!=null&&player.isPlaying()){ player.stop(); player=null; } super.onDestroy(); } }