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