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