마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

음악을 불러와서 폴더별로 나타내고싶습니다.

0 추천
안녕하십니까.
저는 안드로이드를 독학하는 학생입니다.
저의공부방식은 하루에 자바AND안드로이드 강의를 어느정도 들은후
앱을 하나씩 만들어보는 씩으로 공부하는데요.
이번에 제가만드는 앱은 내장&외장 의 모든 .MP3 파일이라는 확장자를 가진 파일을 포함한 모든 폴더를 출력하는것입니다.
아래의 소스는 구글링을통해 얻은 소스입니다.
그런데, 아래의소스처럼 모든 .MP3라는 확장자를가진 파일을 불러내는것까지는 구글링을통해 습득할수있었으나
여기서 어떻게해야할지 도저희 감을못잡겠네요.
구글링을해도 나오지않는것같아 이허게 여쭈어봅니다.
import java.io.File;
import java.util.ArrayList;
 
import android.app.Activity;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
 
public class actMain extends Activity {
ListView lvFileList;
Button btnPlay;
Button btnNext;
ArrayList<String> searchFileList = new ArrayList<String>();// 검색한 파일 목록
 
ArrayList<String> searchFileName = new ArrayList<String>();// 파일 이름만 저장할 목록
MediaPlayer mp = new MediaPlayer();//
 
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
 
lvFileList = (ListView) findViewById(R.id.lvFileList);
 
searchFileList.clear();
searchFileName.clear();
String sdcardPath = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath(); // SD카드 경로
File root = new File(sdcardPath);
if (root == null) {
ToastMessage("파일 검색에 실패 했습니다.", Toast.LENGTH_LONG);
} else {
SearchFile(sdcardPath); // 파일을 검색한다
}
 
if (searchFileList.size() <= 0)
ToastMessage("재생할 오디오 파일이 존재하지 않습니다.", Toast.LENGTH_LONG);
else {
ArrayAdapter<String> adp;
adp = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,
searchFileName);
 
lvFileList.setAdapter(adp);
}
 
}
 
private void ToastMessage(String msg, int time) {
Toast.makeText(actMain.this, msg, time).show();
}
 
private void SearchFile(String str) {
File root = new File(str);
String[] file = root.list();
if (file != null) {
for (int idx = 0; idx < file.length; ++idx) {
File f = new File(str + "/" + file[idx]);
if (f.isFile()) 
{
if (f.getName().endsWith(".mp3")) {
searchFileList.add(str + "/" + file[idx]);
searchFileName.add(file[idx]);
continue;
 
}
}
if (f.isDirectory())
SearchFile(str + "/" + file[idx]);
}
}
 
 
 
private void playAudio(String filePath) {
try {
mp.reset();
mp.setDataSource(filePath);
mp.prepare();
mp.start();
 
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp1) {
 
}
});
} catch (Exception err) {
ToastMessage(err.getMessage(), Toast.LENGTH_LONG);
 
}
}
}
배우는자세 (150 포인트) 님이 2014년 1월 21일 질문

1개의 답변

0 추천
 
채택된 답변

searchFileName 에는 /mnt/aaa/bbb/ccc.mp3  이런 식으로 되있겠죠?

리스트뷰에  /mnt 처럼 최상위 인 것들 목록을 다 표시하고, 선택하면 그 하위 있는 폴더들 표시하고 하는 식으로 일종의 탐색기 처럼 만들면 될 것 같아요 

쎄미 (162,410 포인트) 님이 2014년 1월 21일 답변
배우는자세님이 2014년 1월 24일 채택됨
탐색기처럼 만는드데 탐색기안에 mp3확장자를 찾는매소드를 포함해서 만들면되는건가요? 방법좀 자세히 알려주실수있을까요???
파일이름이 나오니까 확장자가 mp3인지 검사하는게 제일 쉽겠네요
...