android 播放音乐示例

本文介绍了一个简单的Android音乐播放器示例,该应用能够从SD卡中读取MP3文件并实现基本的播放控制功能,如播放、暂停、停止、上一曲和下一曲。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android 播放音乐示例

 

转载自 http://byandby.iteye.com/blog/845089

 

   这个例子是播放音乐的一个小例子也比较简单,大家需要去下载2个.mp3结尾的歌曲,然后放到SD卡里边 进行测试,就可以看到效果了。 运行效果如下

 


 

main.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 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

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"));  
    }  
} 
 

 

 

源码见附件,大家需要下载2首.mp3 结尾的歌曲进行测试

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值