2014-04-06 8 views
0

의 음악 만 나열하므로 내 음악 재생 기능을 구축하고 마침내 작동합니다. 여기 몇몇 특별한 사람들 덕분에. 하지만 처음에는 앱을 실행했지만 음악이 표시되지 않았습니다. 그래서 나는 내 코드를 살펴 보았다. 마지막 String MEDIA_PATH = ("/ sdcard"); - 알아, 하드 코딩하지 마라.하지만 헤이. 그래서 나는 내 장치에 가서 어떤 음악을 내 SD 카드의 뿌리로 옮겼습니다. 앱을 열었고 "Woohoo"라는 음악이 나열되었습니다.음악 플레이어는 "/ sdcard"

내 질문은 지금 내 SD 카드의 모든 음악을 나열하도록 앱을 가져올 수 있습니까? 그리고 단 하나의 디렉토리가 아닙니다. :) 감사. 여기

내 장치에서 음악을 찾는 내 코드입니다 - 고급에서

package com.ascendapps.nexplay; 

import java.io.File; 
import java.io.FilenameFilter; 
import java.util.ArrayList; 
import java.util.HashMap; 

import android.os.Environment; 

public class SongsManager { 
    // SDCard Path 
    final String MEDIA_PATH = ("/sdcard"); 
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

    // Constructor 
    public SongsManager(){ 

    } 

    /* 
    * Function to read all mp3 files from sdcard 
    * and store the details in ArrayList 
    */ 

    public ArrayList<HashMap<String, String>> getPlayList(){ 
     File home = new File(MEDIA_PATH); 
     if (home.listFiles(new FileExtensionFilter())!=null && home.listFiles(new FileExtensionFilter()).length > 0) 
     { 
      for (File file : home.listFiles(new FileExtensionFilter())) { 
       HashMap<String, String> song = new HashMap<String, String>(); 
       song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); 
       song.put("songPath", file.getPath()); 

       // Adding each song to SongList 
       songsList.add(song); 
      } 
     } 
     // return songs list array 
     return songsList; 
    } 

    /* 
    * The following class filters all files that have an extension of .mp3||.MP3 
    */ 
    class FileExtensionFilter implements FilenameFilter { 
     public boolean accept(File dir, String name) { 
      return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
     } 
    } 
} 

감사합니다, 나는이에 대한 몇 가지 연구를 한 것입니다하지만 내 인터넷 슈퍼 슬로우 내가 유래의 캐시 때문에이 다운로드 한 웹 사이트가 더 빨리로드됩니다. 어떤 도움을 주시면 감사하겠습니다.

+0

http://stackoverflow.com/questions/17210519/how-to-access-all-mp3-files-from-all-the-subfolders-in-the-sdcard. 더 나은 http://www.androidside.com/docs/resources/samples/RandomMusicPlayer/src/com/example/android/musicplayer/MusicRetriever.html – Raghunandan

+0

윗도리 시도, 아무것도 바뀌지 않았습니다. –

답변

0
cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, cols, null, null, MediaStore.Audio.Media.TITLE + " ASC"); 
     for (int i = 0; i < cursor.getColumnCount(); i++) 
      Log.d("col_info", cursor.getColumnName(i)); 
     count = cursor.getCount(); 
     cursor.moveToPosition(0); 
     filePath = cursor.getString(2); 
     songName = cursor.getString(0); 
     artist = cursor.getString(3); 
     tvSongName.setText(songName + "\n" + artist); 
    ListView lv = (ListView) findViewById(R.id.listView1); 
    lv.setAdapter(new MusicAdapter(getApplicationContext())); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setWakeMode(this,PowerManager.PARTIAL_WAKE_LOCK); 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View 
     view, int i, long l) { 
      cursor.moveToPosition(i); 
      filePath = cursor.getString(2); 
      songName = cursor.getString(0); 
      artist = cursor.getString(3); 
      tvSongName.setText(songName + "\n" + artist); 

      try { 
       if (mediaPlayer.isPlaying()) 
        mediaPlayer.reset(); 
       mediaPlayer.setDataSource(filePath); 
       mediaPlayer.prepare(); 
       play(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      rlContainer.setVisibility(View.GONE); 
     } 
    }); 

당신을 도울 수 있기를 바랍니다. 고맙습니다!!