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

Android音樂播放器(雛形)

建議:學習本實例之前,請掌握Activity的生命周期相關的事件和方法,這樣學習效果會更好。 

本實例僅供參考學習,並非一款非常完善的產品。由於時間和本人技術有限,不足或者錯誤之處敬請諒解。希望熱心的網友能夠繼續完善。

相關閱讀:

Android中的Activity生命周期 http://www.linuxidc.com/Linux/2011-01/31804.htm

Android Activity生命周期以及LoCat的使用 http://www.linuxidc.com/Linux/2011-05/36655.htm

下面是Activity部分代碼(我一般都會有詳細注釋):

  1. package cn.chaoyang.activity;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import android.app.Activity;  
  7. import android.media.MediaPlayer;  
  8. import android.os.Bundle;  
  9. import android.os.Environment;  
  10. import android.text.BoringLayout.Metrics;  
  11. import android.view.View;  
  12. import android.widget.Button;  
  13. import android.widget.EditText;  
  14. //學習本實例之前,請掌握Activity的生命周期和相關的方法,這樣學習效果會更好。   
  15. public class MainActivity extends Activity {  
  16.     private MediaPlayer mediaplayer;  
  17.     private EditText txtName;  
  18.     private int postion;  
  19.     private String fileName;  
  20.     /** Called when the activity is first created. */  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.         ButtonClickListener listener =new ButtonClickListener();  
  26.          txtName =(EditText)this.findViewById(R.id.inputName);  
  27.         Button btnPlay =(Button)this.findViewById(R.id.btnPlay);  
  28.         Button btnPause =(Button) this.findViewById(R.id.btnPause);  
  29.         Button btnStop =(Button) this.findViewById(R.id.btnStop);  
  30.         Button btnResart=(Button) this.findViewById(R.id.btnRestart);  
  31.         btnPlay.setOnClickListener(listener);  
  32.         btnPause.setOnClickListener(listener);  
  33.         btnStop.setOnClickListener(listener);  
  34.         btnResart.setOnClickListener(listener);  
  35.     }  
  36.     //當系統恢復後,可以重新讀取出之前保存的狀態值   
  37.     @Override  
  38.     protected void onRestoreInstanceState(Bundle savedInstanceState) {  
  39.       this.fileName=savedInstanceState.getString("fileName");  
  40.       this.postion=savedInstanceState.getInt("postion");  
  41.       super.onRestoreInstanceState(savedInstanceState);  
  42.     }  
  43.   //當發生意外時,在系統將Activity的進程殺死之前,保存一些狀態值   
  44.     @Override  
  45.     protected void onSaveInstanceState(Bundle outState) {  
  46.         outState.putString("fileName", fileName);  
  47.         outState.putInt("postion",postion);  
  48.         super.onSaveInstanceState(outState);  
  49.     }  
  50.   //onDestroy方法可以殺掉程序的進程,徹底釋放資源   
  51.     @Override  
  52.     protected void onDestroy() {  
  53.         mediaplayer.release();  
  54.         super.onDestroy();  
  55.     }  
  56.    //如果打電話結束了,繼續播放音樂   
  57.     @Override  
  58.     protected void onResume() {  
  59.         if(postion>0&&fileName!=null)  
  60.         {  
  61.             try {  
  62.                 play();  
  63.             } catch (IOException e) {  
  64.                 // TODO Auto-generated catch block   
  65.                 e.printStackTrace();  
  66.             }  
  67.             mediaplayer.seekTo(postion);  
  68.             postion=0;  
  69.         }  
  70.         super.onResume();  
  71.     }  
  72.   //如果突然來電話或者來短信,Acticity會暫停,停止播放音樂   
  73.     @Override  
  74.     protected void onPause() {  
  75.         if(mediaplayer.isPlaying())  
  76.         {  
  77.             postion =mediaplayer.getCurrentPosition();//保存當前播放點   
  78.             mediaplayer.stop();  
  79.         }  
  80.         super.onPause();  
  81.     }  
  82.   
  83.     private final class ButtonClickListener implements View.OnClickListener  
  84.     {  
  85.                
  86.         @Override  
  87.         public void onClick(View v) {  
  88.             // TODO Auto-generated method stub   
  89.             mediaplayer =new MediaPlayer();  
  90.               
  91.             Button button =(Button) v ;  
  92.             try {  
  93.             switch (v.getId())  
  94.             {  
  95.             //播放   
  96.             case R.id.btnPlay:  
  97.                 if(!mediaplayer.isPlaying())  
  98.                 {  
  99.             play();  
  100.                 }  
  101.             break;  
  102.             //暫停   
  103.             case R.id.btnPause:  
  104.                 //如果正在播放,則按下按鈕後暫停.且按鈕上的文本顯示為"繼續“   
  105.                 if(mediaplayer.isPlaying())  
  106.                 {  
  107.                     mediaplayer.pause();  
  108.                     button.setText(R.string.txtContinue);//設置按鈕文本   
  109.                 }else{  
  110.                     //如果是暫停狀態,按下按鈕後繼續播放   
  111.                    //play();   
  112.                 }  
  113.                 break;  
  114.                 //停止   
  115.             case R.id.btnStop:  
  116.                 if(mediaplayer.isPlaying()){  
  117.                 mediaplayer.stop();  
  118.                 }  
  119.                 break;  
  120.                   
  121.                 //重復   
  122.             case R.id.btnRestart:  
  123.                 if(mediaplayer.isPlaying()){  
  124.                     mediaplayer.seekTo(0);  
  125.                 }else{  
  126.                     play();  
  127.                 }  
  128.                 break;  
  129.             }  
  130.             }catch (Exception e) {  
  131.                 // TODO: handle exception   
  132.             }  
  133.               
  134.               
  135.         }  
  136.   
  137.     }  
  138.     private void play() throws IOException  
  139.     {  
  140.         //獲得音樂文件的絕對路徑   
  141.          fileName=txtName.getText().toString();  
  142.         File file =new File(Environment.getExternalStorageDirectory(),fileName);  
  143.         mediaplayer.reset();//歸位   
  144.         mediaplayer.setDataSource(file.getAbsolutePath());//設置需要播放的數據源   
  145.         mediaplayer.prepare();  
  146.         mediaplayer.start();  
  147.     }  
  148. }  
Copyright © Linux教程網 All Rights Reserved