private void playAudio(String filePath)
{
try
{
mp.reset();
mp.setDataSource(filePath);
mp.prepare();
mp.start();
btnPlay.setText("중지");
mp.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer mp1)
{
btnPlay.setText("재생");
playPosition++; //재생 위치를 1 증가 시킨다.
nextAudio();
}
});
}
catch(Exception err)
{
ToastMessage(err.getMessage(), Toast.LENGTH_LONG);
}
}
private void nextAudio()
{
if(playPosition<playFileList.size())
{
playAudio(playFileList.get(playPosition));
}
else
{
ToastMessage("마지막 곡입니다.", Toast.LENGTH_LONG);
}
}
private void BeforeAudio()
{
if(playPosition>playFileList.size())
{
playAudio(playFileList.get(playPosition));
}
else
{
ToastMessage("첫 곡입니다.", Toast.LENGTH_LONG);
}
}
private OnClickListener reButtonClickListener = new OnClickListener(){
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btnPlay:
if(mp.isPlaying())
{
mp.stop();//재생 정지
btnPlay.setText("재생");
}
else
{
//searchFileList에서 선택한 곡만을 모아서 playFileList를 만든다.
playFileList.clear();//재생목록 초기화
SparseBooleanArray sba = lvFileList.getCheckedItemPositions();
int max = sba.size();
for(int i=0;i<max;i++)
{
if(sba.valueAt(i))
{
playFileList.add(searchFileList.get(sba.keyAt(i)));
}
}
//playFileList의 음악을 하나씩 재생한다.
if(playFileList.size()>0)
{
playPosition=0;//처음 시작은 처음 부터 한다.
playAudio(playFileList.get(playPosition));
}
}
break;
case R.id.btnNext:
playPosition++; //재생 위치를 1 증가 시킨다.
nextAudio();
case R.id.btnBefore:
playPosition--;
BeforeAudio();
break;
}
}
};
}
안드로이드 이클립스 자바를 배우고 있는 초보 학생입니다, 위의 소스대로 mp3 플레이어를 작성하고 있는데 오류가 발생되어 글을 올립니다, 형식은 리스트 형태로 mp3를 가져오고 나서 선택한 음악을 재생하고 다음곡으로 재생하는 프로그램입니다.
그 프로그램에서 이전 기능을 추가하기위해 다음형태에 있던 소스를 참고하여 이전기능을 위 처럼 만들었는데 그 과정에
서 오류가 발생했는지 기능이 제대로 작동되지 않습니다, 음악을 재생하기 전에는 첫 곡 입니다, 다음곡 입니다 등 메시지
가 제대로 표현됬는데 리스트 목록을 선택하고 음악을 재생하고 있는 상황에서는 마지막 곡 입니다가 떠야 되는 상황에서도 첫 곡 입니다 라고 뜨고, 이전 곡을 눌렀을때도 리스트에서 선택된 이전의 노래가 나오지 않고, 첫곡입니다 라는 메시지만 뜹니다.