package soo.audio; 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.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class AudioTest extends ListActivity { /** Called when the activity is first created. */ private static final String PATH="/sdcard/"; private List list = new ArrayList(); private MediaPlayer mp = new MediaPlayer(); private int cPosition = 0; //현재 음악 파일의 위치 private TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.textVeiw02); setAdapter(); } private void setAdapter(){ File f = new File(PATH); if(f.listFiles(new Filter()).length>0){ for(File fChild : f.listFiles(new Filter())){ list.add(fChild.getName()); } ArrayAdapter aa = new ArrayAdapter(this, R.layout.item,list); //setListAdapter(aa); setListAdapter(aa); } } //item을 클릭했을 때 발생하는 이벤트 헨딜링 @Override protected void onListItemClick(ListView l, View v, int position, long id) { cPosition = position; play(PATH+list.get(position)); //sdcard/???.mp3 } private void play(String songPath){ try{ mp.reset(); mp.setDataSource(songPath); mp.prepare(); mp.start(); Toast.makeText(this,"PLAY : "+songPath,Toast.LENGTH_LONG).show(); tv.setText("PLAY : "+songPath); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { nextPlay(); } }); //한곡이 끝날 을 때 발생하는 이벤트 (연속 재생시) }catch(IOException ie){ Toast.makeText(this,ie.toString(),Toast.LENGTH_LONG).show(); } } private void nextPlay(){ ++cPosition; if(cPosition < list.size()){ //다음 곡이 있으면 Toast.makeText(this, "다음곡 재생",Toast.LENGTH_SHORT).show(); play(PATH+list.get(cPosition)); }else{ //마지막 곡이 끝나면... //처음곡으로 돌아 간다. cPosition=0; tv.setText("READY"); } } } class Filter implements FilenameFilter{ @Override public boolean accept(File dir, String filename) { return filename.endsWith(".mp3"); } }