안드로이드 사용자 질문/답변
(글 수 3,598)
엄청 궁금합니다!! updateSong을 넣으면 팅기고 빼면 안팅기구 또 try catch 로 에러잡아주면 실행은 되는데 리스트에 안뜹니다.
코드는 여깄습니다.
package tapbox.kynox.com.tapbox_launchpad;
import android.app.ListActivity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class twoActivity
extends ListActivity {
private final String MEDIA_PATH = new String("/sdcard");
// ROOT 경로를 지정합니다.
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) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.musiclist);
updateSongList();
} catch (NullPointerException e)
{
Log.v(getString(R.string.app_name), e.getMessage());
// SD카드로부터 파일 목록을 불러오는 역할을 합니다.
}
}
public void updateSongList()
{
File home = new File(MEDIA_PATH);
if (home.listFiles(new Mp3Filter()).length > 0)
{
for (File file : home.listFiles(new Mp3Filter()))
{
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(twoActivity.this,R.layout.song_items, songs);
setListAdapter(songList);
}
}
// List 아이템을 클릭했을 때의 event를 처리합니다.
protected void onListItemClick(ListView l, View v, int position, long id)
{
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
Intent i =new Intent(twoActivity.this,tap.class);
startActivity(i);
}
private void playSong(String songPath) {
try {
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
Toast.makeText(this, "재생 : " + songPath, Toast.LENGTH_SHORT).show();
TextView status = (TextView)findViewById(R.id.playStatus);
status.setText("재생중 : " + songPath);
// 한 곡의 재생이 끝나면 다음 곡을 재생하도록 합니다.
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer arg0) {
nextSong();
}
});
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
} } private void nextSong() {
if (++currentPosition >= songs.size()) {
// 마지막 곡이 끝나면, 재생할 곡을 초기화합니다.
currentPosition = 0;
TextView status = (TextView)findViewById(R.id.playStatus);
status.setText("준비됨");
} else {
// 다음 곡을 재생합니다.
Toast.makeText(getApplicationContext(), "다음 곡을 재생합니다.", Toast.LENGTH_SHORT).show();
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
}
class Mp3Filter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
return (name.endsWith(".mp3"));
}
}
어떻게 해야할까요..
try catch를 빼고 해봐야하는지 아니면 경로가 잘못되어 리스트에 안뜨는건지.. 아니면 그냥 잘못된건지 모르겟네요 ㅠㅠ..
익셉션 메시지를 확인하세요