private static final String MEDIA_PATH = new String("/sdcard/");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
updateSongList();
}
private void updateSongList() {
// TODO Auto-generated method stub
File home = new File(MEDIA_PATH);
int num = home.listFiles(new Mp3Filter()).length;
if(home.listFiles(new Mp3Filter()).length > 0) ///< error 이부분에서 오류가 납니다.
{
for(File file : home.listFiles(new Mp3Filter()))
{
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this, R.layout.song_item, songs);
setListAdapter(songList);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
}
private void playSong(String songPath)
{
try
{
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
nextSong();
}
});
}
catch(IOException e){;}
}
private void nextSong()
{
if(++currentPosition >= songs.size())
{
currentPosition = 0;
}
else
{
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
}
class Mp3Filter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return (name.endsWith(".mp3"));
}
}
제가 보기에 adv 로 실행 하면서 경로는 sdcard 인데 sdcard 가 존재 하지 않아 생기는 버그 같습니다.
절대경로로 지정 할 수 있는 방법 부탁 드립니다.



