2013-12-13 32 views
0

我正在嘗試製作音樂專輯應用程序,該應用程序中包含一些歌曲並可以播放它們。我製作了這個播放器,但現在我被卡住了,因爲我的播放器在sd卡的特殊地址中使用了音樂,我需要複製音頻或使用設備上已安裝的應用程序的資產(或行)文件夾(我不知道如果手機內存中有這個文件夾或者沒有)。如果有更好的方法,請讓我知道。如何通過將其保存到SD卡或使用應用程序的安裝地址來訪問原始或資產文件夾中的音頻?

這裏是我的代碼:

public class SongsManager { 
    // SDCard Path 
    final String MEDIA_PATH = new String("/sdcard/piano/"); 
    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()).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; 
    } 

回答

0

資源文件夾是文件夾讀取,你可以不寫或SD卡資產文件夾存儲文件。您可以在準備項目的最終版本之前,先將一些Mp3文件添加到您的資產文件夾,然後再將它們複製到SD卡。

現在您可以從SD卡或資產訪問這些文件。您只能使用某些RESTful POST Web服務將Mp3歌曲從SD卡存儲到服務器。

下面是從資產的文件複製到SD卡中的鏈接

How to copy files from 'assets' folder to sdcard?

希望這將有助於你

+0

感謝您的鏈接。 – Sam

0

您可以檢查是否有存在的文件夾:

File myFile = new File(myPath); 
if (myFile.exists()) { 
    // The folder exists so use the files in this folder 
} else { 
    // The folder does not exist so use the assets from the apps raw folder 
} 

<Additional>

你不想顯示資產的地址文件夾(向用戶列出應用程序的內部文件結構會很糟糕),但是可以列出原始目錄中的文件在您的應用程序中,並允許您的用戶從中選擇。下面的代碼填充陣列從您的原始文件夾的內容soundNames[]soundIds[]

Field[] fields = R.raw.class.getFields(); 
String[] soundNames = new String[fields.length]; 
int[] soundIds = new int[fields.length]; 
for (int i = 0; i < fields.length; i++) { 
    soundNames[i] = fields[i].getName(); 
    soundIds[i] = getResources().getIdentifier(soundNames[i], null, null); 
} 
+0

我的問題是,加載的歌曲形成/ SD卡/鋼琴演奏家/但我想顯示它的資產文件夾的地址(我的安裝位置)是可能的? – Sam

+0

我已更新我的答案,以顯示如何獲取「原始」文件夾的內容列表。 –

相關問題