歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android音樂播放MediaPlayer

Android音樂播放MediaPlayer代碼,很簡單的例子程序,根據拖動,可是實現歌曲的不同位置的播放。 

  1. package mars.com;  
  2.   
  3. import android.app.Activity;  
  4. import android.media.MediaPlayer;  
  5. import android.media.MediaPlayer.OnCompletionListener;  
  6. import android.os.AsyncTask;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.SeekBar;  
  12. import android.widget.SeekBar.OnSeekBarChangeListener;  
  13. import android.widget.TextView;  
  14.   
  15. public class DemoMP3Activity extends Activity {  
  16.     private Button play;  
  17.     private Button pause;  
  18.     private Button stop;  
  19.     private TextView info;  
  20.     private SeekBar seekBar;  
  21.     private MediaPlayer mediaPlayer;  
  22.     private boolean isPlay = true;// 播放標記   
  23.     private boolean isPause = false;// 暫停標記   
  24.   
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.main);  
  29.         info = (TextView) findViewById(R.id.textView1);  
  30.         play = (Button) findViewById(R.id.button1);  
  31.         pause = (Button) findViewById(R.id.button2);  
  32.         stop = (Button) findViewById(R.id.button3);  
  33.         seekBar = (SeekBar) findViewById(R.id.seekBar1);  
  34.   
  35.         this.play.setOnClickListener(new OnClickListener() {  
  36.             public void onClick(View v) {  
  37.                 mediaPlayer = MediaPlayer.create(getApplicationContext(),  
  38.                         R.raw.bird);  
  39.                 if (mediaPlayer != null) {  
  40.                     mediaPlayer.stop();  
  41.                 }  
  42.                 seekBar.setMax(mediaPlayer.getDuration());// 設置拖拽條的長度   
  43.                 UpdateThread update = new UpdateThread();  
  44.                 update.execute(1000);// 每一秒就更新一次進度條   
  45.                 DemoMP3Activity.this.mediaPlayer  
  46.                         .setOnCompletionListener(new OnCompletionListener() {  
  47.                             public void onCompletion(MediaPlayer mp) {  
  48.                                 // 如果播放完了   
  49.                                 isPlay = false;  
  50.                                 mediaPlayer.release();// 釋放資源   
  51.                             }  
  52.                         });  
  53.                 try {  
  54.                     mediaPlayer.prepare();  
  55.                     mediaPlayer.start();  
  56.                     info.setText("正在播放");  
  57.                 } catch (Exception e) {  
  58.                     info.setText(e.toString());  
  59.                 }  
  60.             }  
  61.         });  
  62.   
  63.         this.pause.setOnClickListener(new OnClickListener() {  
  64.             public void onClick(View v) {  
  65.                 if (mediaPlayer != null) {  
  66.                     if (isPause == false) {  
  67.                         mediaPlayer.pause();  
  68.                         isPause = true;  
  69.                         info.setText("暫停播放");  
  70.                     } else {  
  71.                         mediaPlayer.start();  
  72.                         isPause = false;  
  73.                         info.setText("繼續播放");  
  74.                     }  
  75.                 }  
  76.             }  
  77.         });  
  78.   
  79.         this.stop.setOnClickListener(new OnClickListener() {  
  80.             public void onClick(View v) {  
  81.                 if (mediaPlayer != null) {  
  82.                     mediaPlayer.stop();  
  83.                     info.setText("停止播放");  
  84.                 }  
  85.             }  
  86.         });  
  87.   
  88.         this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {  
  89.             public void onStopTrackingTouch(SeekBar seekBar) {  
  90.                 mediaPlayer.seekTo(seekBar.getProgress());  
  91.             }  
  92.   
  93.             public void onStartTrackingTouch(SeekBar seekBar) {  
  94.   
  95.             }  
  96.   
  97.             public void onProgressChanged(SeekBar seekBar, int progress,  
  98.                     boolean fromUser) {  
  99.   
  100.             }  
  101.         });  
  102.     }  
  103.   
  104.     private class UpdateThread extends AsyncTask<Integer, Integer, String> {  
  105.         @Override  
  106.         protected void onPostExecute(String result) {  
  107.             super.onPostExecute(result);  
  108.         }  
  109.   
  110.         @Override  
  111.         protected void onProgressUpdate(Integer... values) {  
  112.             seekBar.setProgress(values[0]);// 更新   
  113.         }  
  114.   
  115.         @Override  
  116.         protected String doInBackground(Integer... params) {  
  117.             while (isPlay) {  
  118.                 try {  
  119.                     Thread.sleep(params[0]);  
  120.                 } catch (InterruptedException e) {  
  121.                     e.printStackTrace();  
  122.                 }  
  123.                 this.publishProgress(mediaPlayer.getCurrentPosition());// 將media的當前進度傳遞過去   
  124.             }  
  125.   
  126.             return null;  
  127.         }  
  128.   
  129.     }  
  130. }  
Copyright © Linux教程網 All Rights Reserved