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”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值