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

안드로이드 sd카드 검색에 대한 질문입니다.

0 추천
// 2.SD카드 사용가능 여부 판단
  if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED) == false) {
   Toast.makeText(this, "SD 카드가 반드시 필요합니다.", Toast.LENGTH_LONG).show();
   finish(); 
   return;
  }
  
  // 3.SD카드 경로에서  FilenameFilter 사용하여  mp3파일 추출 
  sdPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); 
  sdDir = new File(sdPath);
  FilenameFilter filter = new FilenameFilter() {
   public boolean accept(File dir, String name) {
    return name.endsWith(".mp3");
   }
  };
  
  // 4.추출한 mp3파일들을 파일목록List에 저장
  String[] mplist = sdDir.list(filter);
  if (mplist.length == 0) {
   Toast.makeText(this, "재생할 파일이 없습니다.", 1).show();
   finish();
   return;
  }
  mp3List = new ArrayList<String>();
  for(String s : mplist) {
   mp3List.add(sdPath + "/" + s);
  }
  position = 0; //재생위치를 처음으로 설정.endsWith(".mp3");
&nbsp;&nbsp;&nbsp;}

 

위와 같은 형식으로 sd카드에 있는 mp3파일을 찾으고 리스트를 만들려고 하는데 프로그램을 넣고 휴대폰에서 실행시키면 재생할 파일이 없다고 출력되는데 무엇이 문제인지 알 수 있을까요..

wasingtonz (390 포인트) 님이 2014년 4월 13일 질문

1개의 답변

+1 추천
 
채택된 답변
SD카드 루트 폴더에 MP3 확장자를 가진 파일이 존재하는지 확인해보세요~

코드 상으로는 하위 폴더까지 방문하지 않을 것으로 판단됩니다.
Lifeclue (7,930 포인트) 님이 2014년 4월 14일 답변
wasingtonz님이 2014년 4월 15일 채택됨
하위까지 할려면 어떻게 해야되는지, 알려주실 수 있을까요.. 부탁드려요.
일단 단말 내에 MP3파일 목록이 필요하신 거라면
ContentProvider를 사용하시는 것이 좋아보입니다.
http://developer.android.com/reference/android/provider/MediaStore.Audio.html
이 페이지가 도움이 되겠네요.

ContentProvider를 간략하게 설명 드리자면 (제가 아는 선에서...)
안드로이드는 미디어의 메타 정보를 DB에 저장해놓고 제공하는 것입니다.
MediaStore에 보시면 Images도 있고 Video도 있습니다.
앱을 처음 켜시면 미디어 탐색을 한다는 내용의 알림을 보셨을 겁니다. 이 때 파일시스템에서 미디어를 수집하는데요. 여기에 mp3도 있으니 공부해보시는 것도 좋을 것 같습니다.

위 코드로 해결하시려면 재귀함수를 쓰시는 것이 좋아보입니다.
accept에서 넘어온 dir이 디렉토리면 그 디렉토리를 또 방문하고 그 안에 디렉토리가 있으면 또 방문하는 식입니다.
...