1. 程式人生 > >【安卓例項】3音樂播放器簡單版

【安卓例項】3音樂播放器簡單版

  1. package com.terry;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.List; 
  5. import android.app.ListActivity;
  6. import android.media.MediaPlayer;
  7. import android.media.MediaPlayer.OnCompletionListener;
  8. import android.os.Bundle;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.widget.ArrayAdapter;
  13. import android.widget.Button;
  14. import android.widget.ListView;
  15. import android.widget.Toast;
  16. public class musicActivity extends ListActivity {
  17.     //播放物件
  18.     private MediaPlayer myMediaPlayer;
  19.     //播放列表
  20.     private List<String> myMusicList=new ArrayList<String>();
  21.     //當前播放歌曲的索引
  22.     private int currentListItem=0;
  23.     //音樂的路徑
  24.     private static final String MUSIC_PATH=new String("/sdcard/");
  25.     /** Called when the activity is first created. */
  26.     @Override
  27.     public void onCreate(Bundle savedInstanceState) {
  28.         super.onCreate(savedInstanceState);
  29.         setContentView(R.layout.main);
  30.         myMediaPlayer=new MediaPlayer();
  31.         findView();
  32.         musicList();
  33.         listener();
  34.     }
  35.     //繫結音樂
  36.     void musicList(){
  37.         File home=new File(MUSIC_PATH);
  38.         if(home.listFiles(new MusicFilter()).length>0){
  39.             for(File file:home.listFiles(new MusicFilter())){
  40.                 myMusicList.add(file.getName());
  41.             }
  42.             ArrayAdapter<String> musicList=new ArrayAdapter<String>
  43.             (musicActivity.this,R.layout.musicitme, myMusicList);
  44.             setListAdapter(musicList);
  45.         }
  46.     }
  47.     //獲取按鈕
  48.    void findView(){
  49.        viewHolder.start=(Button)findViewById(R.id.start);
  50.        viewHolder.stop=(Button)findViewById(R.id.stop);
  51.        viewHolder.next=(Button)findViewById(R.id.next);
  52.        viewHolder.pause=(Button)findViewById(R.id.pause);
  53.        viewHolder.last=(Button)findViewById(R.id.last);
  54.    }
  55.    //監聽事件
  56.    void listener(){
  57.        //停止
  58.        viewHolder.stop.setOnClickListener(new OnClickListener() {
  59.         @Override
  60.         public void onClick(View v) {
  61.             // TODO Auto-generated method stub
  62.             if(myMediaPlayer.isPlaying()){
  63.                 myMediaPlayer.reset();
  64.             }
  65.         }
  66.     });
  67.        //開始
  68.        viewHolder.start.setOnClickListener(new OnClickListener() {
  69.         @Override
  70.         public void onClick(View v) {
  71.             // TODO Auto-generated method stub
  72.             playMusic(MUSIC_PATH+myMusicList.get(currentListItem));
  73.         }
  74.     });
  75.        //下一首
  76.        viewHolder.next.setOnClickListener(new OnClickListener() {
  77.         @Override
  78.         public void onClick(View v) {
  79.             // TODO Auto-generated method stub
  80.             nextMusic();
  81.         }
  82.     });
  83.        //暫停
  84.        viewHolder.pause.setOnClickListener(new OnClickListener() {
  85.         @Override
  86.         public void onClick(View v) {
  87.             // TODO Auto-generated method stub
  88.             if(myMediaPlayer.isPlaying()){
  89.                 myMediaPlayer.pause();
  90.             }else{
  91.                 myMediaPlayer.start();
  92.             }
  93.         }
  94.     });
  95.        //上一首
  96.        viewHolder.last.setOnClickListener(new OnClickListener() {
  97.         @Override
  98.         public void onClick(View v) {
  99.             // TODO Auto-generated method stub
  100.             lastMusic();
  101.         }
  102.     });
  103.    }
  104.    //播放音樂 
  105.    void playMusic(String path){
  106.        try { 
  107.         myMediaPlayer.reset();
  108.         myMediaPlayer.setDataSource(path);
  109.         myMediaPlayer.prepare();
  110.         myMediaPlayer.start();
  111.         myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
  112.             @Override
  113.             public void onCompletion(MediaPlayer mp) {
  114.                 // TODO Auto-generated method stub
  115.                 nextMusic();
  116.             }
  117.         });
  118.     } catch (Exception e) {
  119.         // TODO: handle exception
  120.         e.printStackTrace();
  121.     }
  122.    }
  123.    //下一首
  124.    void nextMusic(){
  125.        if(++currentListItem>=myMusicList.size()){
  126.            currentListItem=0;
  127.        }
  128.        else{
  129.            playMusic(MUSIC_PATH+myMusicList.get(currentListItem));
  130.        }
  131.    }
  132.    //上一首
  133.    void lastMusic(){
  134.        if(currentListItem!=0)
  135.            {
  136.        if(--currentListItem>=0){
  137.            currentListItem=myMusicList.size();
  138.        } else{
  139.            playMusic(MUSIC_PATH+myMusicList.get(currentListItem));
  140.        }
  141.           }  else{
  142.            playMusic(MUSIC_PATH+myMusicList.get(currentListItem));
  143.        }
  144.    }
  145.    //當用戶返回時結束音樂並釋放音樂物件
  146.        @Override
  147.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  148.         // TODO Auto-generated method stub
  149.            if(keyCode==KeyEvent.KEYCODE_BACK){
  150.                myMediaPlayer.stop();
  151.                myMediaPlayer.release();
  152.                this.finish();
  153.                return true;
  154.            }
  155.         return super.onKeyDown(keyCode, event);
  156.     }
  157.        //當選擇列表項時播放音樂 
  158.        @Override
  159.     protected void onListItemClick(ListView l, View v, int position, long id) {
  160.         // TODO Auto-generated method stub
  161.         currentListItem=position;
  162.         playMusic(MUSIC_PATH+myMusicList.get(currentListItem));
  163.     }
  164. }