2017-01-12 10 views

답변

1

먼저 사용 가능한 모든 mp3 파일을 얻을 u는 목록보기로 설정할 수 유 예에 대한 입수해온 데이터를 원하는대로 아래 코드 않습니다를 사용하거나 대화 등 그들을 보여주는 그들의 이름을 retreive

String extPath = getSecondaryStorage(); 
      if (extPath != null) 
      { mySongs_onSystem = findSongs(new File(extPath)); 
     } 
      else 
       mySongs_onSystem = findSongs(Environment.getExternalStorageDirectory()); 

      public ArrayList<File> findSongs(File root) { 
        ArrayList<File> al = new ArrayList<>(); 
        File[] files = root.listFiles(); 
        for (File singleFile : files) { 
         if (singleFile.isDirectory()) { 
          al.addAll(findSongs(singleFile)); 
         } else { 
          if (singleFile.getName().endsWith(".mp3") || singleFile.getName().endsWith(".Mp3") || singleFile.getName().endsWith(".wav")) { 
           al.add(singleFile); 
          } 
         } 

        } 
        return al; 
       } 
private String getSecondaryStorage() { 


     String strSDCardPath = System.getenv("SECONDARY_STORAGE"); 

     if ((strSDCardPath == null) || (strSDCardPath.length() == 0)) { 
      strSDCardPath = System.getenv("EXTERNAL_SDCARD_STORAGE"); 
     } 

     //If may get a full path that is not the right one, even if we don't have the SD Card there. 
     //We just need the "/mnt/extSdCard/" i.e and check if it's writable 
     if (strSDCardPath != null) { 
      if (strSDCardPath.contains(":")) { 
       strSDCardPath = strSDCardPath.substring(0, strSDCardPath.indexOf(":")); 
      } 
      File externalFilePath = new File(strSDCardPath); 

      if (externalFilePath.exists() && externalFilePath.canWrite()) { 
       return strSDCardPath; 
      } 
     } 
     return null; 
    } 

이와 같은 for 루프를 사용하여 모든 mp3 파일의 이름을 검색하십시오.

for (int i = 0; i < mySongs_onSystem.size(); i++) { 
    //declare a string array in global String[] songNames; 
songNames[i] = mySongs_onSystem.get(i).getName().toString().replace(".mp3", "").replace(".Mp3", "").replace(".wav", ""); 
      Log.i("songname", songNames[i]); 
     } 

는 입수해온 MP3 톤의 문자열 배열을 전달하고 트리거됩니다 사용자 정의 인터페이스를 만들 클릭 리스너 및

store the uri of the selected mp3 
Uri u = Uri.parse(mySongs_onSystem.get(position).getAbsolutePath()); 

을 목록에있는 모든 노래의 이름을 표시하고 연결하는 어댑터를 목록에 첨부 알림이 도착한 후 다음과 같은 미디어 플레이어를 사용하여 선택한 mp3 오디오를 재생하십시오.

mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer = MediaPlayer.create(getApplicationContext(),u); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mMediaPlayer.setLooping(true); 
    mMediaPlayer.start(); 
+0

감사의 말 Roy의 답변에 감사드립니다.이 코드는 시스템 벨소리 (모바일 장치 def ault 벨소리가 아닙니다 .Mp3 형식 파일). 모든 .mp3 형식 파일 (예 : 영화 노래도)이 필요합니다. –

+0

첫 번째 루프는 Environment.getExternalStorageDirectory()를 통해 다음과 같이됩니다. ArrayList mySongs_onSystem = findSongs (Environment.getExternalStorageDirectory()); –

+0

부적처럼 일했습니다. 내 시간을 구 했잖아. Environment.getExternalStorageDirectory()가 SdCard0, 즉 내부 저장소를 참조하고 있으므로 체크 아웃합니다. 고맙습니다. –