音乐播放器入门

 

package xiaosi.mp3;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
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.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class Mp3Activity extends ListActivity {
    /** Called when the activity is first created. */
	private int Mp3index = 0;
	private ImageButton Start = null;
	private ImageButton Last = null;
	private ImageButton Next = null;
	private ImageButton Pause = null;
	private ImageButton Stop = null;
	
	private MediaPlayer mediaPlayer = null;
	private static final String Path = new String("/sdcard/player/");
	private List<HashMap<String, String>> Mp3List;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Mp3List = new ArrayList<HashMap<String,String>>();
        //构建MediaPlayer对象
        mediaPlayer = new MediaPlayer();
        //生成播放列表
        Mp3List();
        Start = (ImageButton)findViewById(R.id.Start);
        Start.setOnClickListener(new StartListener());
        
        Last = (ImageButton)findViewById(R.id.Last);
        Last.setOnClickListener(new LastListener());
        
        Next = (ImageButton)findViewById(R.id.Next);
        Next.setOnClickListener(new NextListener());
        
        Pause = (ImageButton)findViewById(R.id.Pause);
        Pause.setOnClickListener(new PauseListener());
        
        Stop = (ImageButton)findViewById(R.id.Stop);
        Stop.setOnClickListener(new StopListener());
        
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    /* 播放列表 */
	public void Mp3List()
	{
		//取得指定位置的文件设置显示到播放列表
		File Mp3 = new File(Path);
		File[] songs = Mp3.listFiles(new MusicFilter());
		if(songs!= null){
			int length = Mp3.listFiles(new MusicFilter()).length;
			for (int i = 0;i<length;i++)
			{
				HashMap<String,String> hashmap = new HashMap<String,String>();
				hashmap.put("ID", "NO." + (i+1));
				hashmap.put("Name",songs[i].getName());
				Mp3List.add(hashmap);
				System.out.println("Name:" + songs[i].getName());
			}
			SimpleAdapter simpleAdapter = new SimpleAdapter(Mp3Activity.this,Mp3List,R.layout.musicitme,new String[]{"ID","Name"},new int[]{R.id.ID,R.id.Name});
			setListAdapter(simpleAdapter);
		}
		else{
			System.out.println("该目录下没有歌曲");
		}
	}
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //开始播放
	private class StartListener implements OnClickListener{

		public void onClick(View v) {
			playMusic(Path + Mp3List.get(Mp3index).get("Name"));
		}
    	
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //上一首歌曲
	private class LastListener implements OnClickListener{

		public void onClick(View v) {
			previousMusic();
		}
    	
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //下一首歌曲
	private class NextListener implements OnClickListener{

		public void onClick(View v) {
			nextMusic();
		}
    	
    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //暂停
	private class PauseListener implements OnClickListener{

		public void onClick(View v) {
			if(mediaPlayer.isPlaying()){
				mediaPlayer.pause();
			}
			else{
				mediaPlayer.start();
			}
		}
    	
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
   //停止
	private class StopListener implements OnClickListener{

		public void onClick(View v) {
			if(mediaPlayer.isPlaying()){
				mediaPlayer.reset();
			}
		}
    	
    }
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //下一首歌曲
    private void nextMusic(){
    	//播放到末尾,从头开始
    	if(++Mp3index >= Mp3List.size()){
    		Mp3index = 0;
    	}
    	playMusic(Path + Mp3List.get(Mp3index).get("Name"));
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //上一首歌曲
    private void previousMusic(){
    	//播放到末尾,从头开始
    	if(--Mp3index < 0){
    		Mp3index = Mp3List.size()-1;
    	}
    	playMusic(Path + Mp3List.get(Mp3index).get("Name"));
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //播放
    private void playMusic(String path){
    	
    	try {
    		//重置mediaPlayer
        	mediaPlayer.reset();
        	//设置数据源
			mediaPlayer.setDataSource(path);
			//进入准备状态
			mediaPlayer.prepare();
			//开始播放
			mediaPlayer.start();
			//设置监听器,播放完一首歌之后进行下一首歌
			mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
				
				public void onCompletion(MediaPlayer mp) {
					//下一首歌
					nextMusic();
				}
			});
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    /* 过滤文件类型 */
    class MusicFilter implements java.io.FilenameFilter
    {
    	public boolean accept(File dir, String name)
    	{
    		//这里还可以设置其他格式的音乐文件
    		return (name.endsWith(".mp3"));
    	}
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //随即点击播放
    @Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		Mp3index = position;
		playMusic(Path + Mp3List.get(position).get("Name"));
		super.onListItemClick(l, v, position, id);
	}
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_BACK){
			mediaPlayer.stop();
			mediaPlayer.release();
			this.finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
    
}


 

源代码下载: 点击打开链接
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值