android播放音樂示例 – Android移動開發技術文章_手機開發 Android移動開發教學課程

這個例子是播放音樂的一個小例子也比較簡單,大傢需要去下載2個.mp3結尾的歌曲,然後放到SD卡裡邊 進行測試,就可以看到效果瞭。 運行效果如下
 


 
main.xml
Xml代碼 
<?xml version="1.0" encoding="utf-8"?>   
<AbsoluteLayout    
  xmlns:android="http://schemas.android.com/apk/res/android"   
  android:orientation="vertical"   
  android:layout_width="fill_parent"   
  android:layout_height="fill_parent"   
  >   
  <ListView    
  android:id="@id/android:list"   
  android:layout_width="fill_parent"    
  android:layout_height="fill_parent"   
  android:layout_weight="1"   
  android:drawSelectorOnTop="false"/>   
  <ImageButton   
  android:id="@+id/LastImageButton"   
  android:layout_width="wrap_content"   
  android:layout_height="wrap_content"     
  android:layout_x="10px"   
  android:layout_y="70px"   
  android:src="@drawable/last"     
  />   
  <ImageButton   
  android:id="@+id/StopImageButton"    
  android:layout_height="wrap_content"     
  android:layout_width="wrap_content"   
  android:layout_x="70px"   
  android:layout_y="70px"   
  android:src="@drawable/stop"    
  />     
  <ImageButton   
  android:id="@+id/StartImageButton"    
  android:layout_height="wrap_content"     
  android:layout_width="wrap_content"    
  android:layout_x="130px"   
  android:layout_y="70px"   
  android:src="@drawable/start"    
  />   
  <ImageButton   
  android:id="@+id/PauseImageButton"    
  android:layout_height="wrap_content"     
  android:layout_width="wrap_content"    
  android:layout_x="190px"   
  android:layout_y="70px"    
  android:src="@drawable/pause"    
  />     
  <ImageButton   
  android:id="@+id/NextImageButton"   
  android:layout_width="wrap_content"   
  android:layout_height="wrap_content"    
  android:layout_x="250px"   
  android:layout_y="70px"   
  android:src="@drawable/next"     
  />   
</AbsoluteLayout> 
 
musicitme.xml
 
Xml代碼 
<?xml version="1.0" encoding="utf-8"?>   
<TextView xmlns:android="http://schemas.android.com/apk/res/android"   
    android:id="@+id/TextView01"   
    android:layout_width="fill_parent"    
    android:layout_height="wrap_content"    
    android:text="@string/hello"/>  
 
隻有一個類 Activity01
Java代碼 
package com.yarin.android.Examples_07_01;   
   
import java.io.File;   
import java.io.FilenameFilter;   
import java.io.IOException;   
import java.util.ArrayList;   
import java.util.List;   
import android.app.ListActivity;   
import android.media.MediaPlayer;   
import android.media.MediaPlayer.OnCompletionListener;   
import android.os.Bundle;   
import android.view.KeyEvent;   
import android.view.View;   
import android.widget.ArrayAdapter;   
import android.widget.ImageButton;   
import android.widget.ListView;   
   
public class Activity01 extends ListActivity    
{   
    /* 幾個操作按鈕 */   
    private ImageButton mFrontImageButton   = null;   
    private ImageButton mStopImageButton    = null;   
    private ImageButton mStartImageButton   = null;   
    private ImageButton mPauseImageButton   = null;   
    private ImageButton mNextImageButton    = null;   
   
    /* MediaPlayer對象 */   
    public MediaPlayer  mMediaPlayer        = null;   
       
    /* 播放列表 */   
    private List<String> mMusicList = new ArrayList<String>();   
       
    /* 當前播放歌曲的索引 */   
    private int currentListItme = 0;   
       
    /* 音樂的路徑 */   
    private static final String MUSIC_PATH = new String("/sdcard/");   
   
    /** Called when the activity is first created. */   
    @Override   
    public void onCreate(Bundle savedInstanceState)   
    {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        /* 更新顯示播放列表 */   
        musicList();   
        /* 構建MediaPlayer對象 */   
        mMediaPlayer        = new MediaPlayer();   
   
        mFrontImageButton = (ImageButton) findViewById(R.id.LastImageButton);    
        mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);   
        mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton);    
        mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);   
        mNextImageButton = (ImageButton) findViewById(R.id.NextImageButton);    
           
        //停止按鈕   
        mStopImageButton.setOnClickListener(new ImageButton.OnClickListener()    
        {   
            @Override   
            public void onClick(View v)   
            {   
                /* 是否正在播放 */   
                if (mMediaPlayer.isPlaying())   
                {   
                    //重置MediaPlayer到初始狀態   
                    mMediaPlayer.reset();   
                }   
            }   
        });    
           
        //開始按鈕   
        mStartImageButton.setOnClickListener(new ImageButton.OnClickListener()    
        {   
            @Override   
            public void onClick(View v)   
            {   
                playMusic(MUSIC_PATH + mMusicList.get(currentListItme));   
            }   
        });     
           
        //暫停   
        mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener()    
        {   
            public void onClick(View view)   
            {   
                if (mMediaPlayer.isPlaying())   
                {   
                    /* 暫停 */   
                    mMediaPlayer.pause();   
                }   
                else    
                {   
                    /* 開始播放 */   
                    mMediaPlayer.start();   
                }   
            }   
        });   
           
        //下一首   
        mNextImageButton.setOnClickListener(new ImageButton.OnClickListener()    
        {   
            @Override   
            public void onClick(View arg0)   
            {   
                nextMusic();   
            }   
        });   
        //上一首   
        mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener()    
        {   
            @Override   
            public void onClick(View arg0)   
            {   
                FrontMusic();   
            }   
        });   
    }   
       
    /*<—————————————————————–>*/   
       
    public boolean onKeyDown(int keyCode, KeyEvent event)   
    {   
        if ( keyCode ==  KeyEvent.KEYCODE_BACK)   
        {   
            mMediaPlayer.stop();   
            mMediaPlayer.release();   
            this.finish();   
            return true;   
        }   
        return super.onKeyDown(keyCode, event);   
    }   
       
       
    @Override   
    /* 當我們點擊列表時,播放被點擊的音樂 */   
    protected void onListItemClick(ListView l, View v, int position, long id)   
    {   
        currentListItme = position;   
        playMusic(MUSIC_PATH + mMusicList.get(position));   
    }   
   
   
    /* 播放列表 */   
    public void musicList()   
    {   
        //取得指定位置的文件設置顯示到播放列表   
        File home = new File(MUSIC_PATH);   
        if (home.listFiles(new MusicFilter()).length > 0)   
        {   
            for (File file : home.listFiles(new MusicFilter()))   
            {   
                mMusicList.add(file.getName());   
            }   
            ArrayAdapter<String> musicList = new ArrayAdapter<String>(Activity01.this,R.layout.musicitme, mMusicList);   
            setListAdapter(musicList);   
        }   
    }   
       
    private void playMusic(String path)   
    {   
        try   
        {   
            /* 重置MediaPlayer */   
            mMediaPlayer.reset();   
            /* 設置要播放的文件的路徑 */   
            mMediaPlayer.setDataSource(path);   
            /* 準備播放 */   
            mMediaPlayer.prepare();   
            /* 開始播放 */   
            mMediaPlayer.start();   
            mMediaPlayer.setOnCompletionListener(new OnCompletionListener()    
            {   
                public void onCompletion(MediaPlayer arg0)   
                {   
                    //播放完成一首之後進行下一首   
                    nextMusic();   
                }   
            });   
        }catch (IOException e){}   
    }   
   
    /* 下一首 */   
    private void nextMusic()   
    {   
        if (++currentListItme >= mMusicList.size())   
        {   
            currentListItme = 0;   
        }   
        else   
        {   
            playMusic(MUSIC_PATH + mMusicList.get(currentListItme));   
        }   
    }   
       
    /* 上一首 */   
    private void FrontMusic()   
    {   
        if (–currentListItme >= 0)   
        {   
            currentListItme = mMusicList.size();   
        }   
        else   
        {   
            playMusic(MUSIC_PATH + mMusicList.get(currentListItme));   
        }   
    }   
   
}   
   
/* 過濾文件類型 */   
class MusicFilter implements FilenameFilter   
{   
    public boolean accept(File dir, String name)   
    {   
        //這裡還可以設置其他格式的音樂文件   
        return (name.endsWith(".mp3"));   
    }   
}  

 

本文出自“stephen830”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。