2010-10-20 59 views
2


我需要編寫一個Android應用程序,該應用程序可以從互聯網下載聲音以供進一步使用。
我應該在哪裏儲存這些聲音? Sqlite是一個選項嗎?加載和播放這些文件的最佳方式是什麼?
在此先感謝。關於Android文件存儲的指導

+0

作爲一個Android用戶,我建議將文件存儲在用戶的SD卡上(如果有的話)。大多數Android手機的存儲容量相對有限,更讓人遺憾的是,更多的應用沒有充分利用SD卡。 – 2010-10-20 12:53:58

+0

是的。我通常會刪除內部存儲空間很大的應用程序,特別是如果它們的設置遠遠超過原始應用程序的大小。但即使將內容存儲在SD卡上並安裝到SD,內部存儲器的使用情況仍然非常重要。我希望在將來的發行版中會有一個更完善的系統來完全安裝所有東西(包括大部分/ data,* .dex文件等等到SD卡) – Tseng 2010-10-20 13:00:42

回答

4

我建議將文件放在SD卡上,如果存在的話。但有一點需要注意的是,你永遠不應該爲SD卡編寫路徑。你可能會想沿着線做一些事情:

try { 
     //Create handle to SD card drectory 
     exportDirectory = new File(Environment.getExternalStorageDirectory() + "/MyDir"); 

     //Verify export path exists. Create otherwise. 
     if (exportDirectory.exists() == false) { 
      if (exportDirectory.mkdirs() == false) { 

       //Directory structure could not be created. 
       //Message the user here 
       return false; 
      } 
     } 

     //Create handle to SD card file. 
     exportFile = new File(exportDirectory.getAbsolutePath() + "/whatever.mp3"); 

     //Do whatever here 

} catch(Exception e) { 
     //Exception. Message user and bail 
     return false; 
} 

從那裏轉移你想進入任何文件數據的一個簡單的事情。除非您計劃存儲大量額外信息,否則SQLite數據庫可能會對此應用程序造成過度的損害。除非將文件直接作爲BLOB存儲到數據庫中,否則用戶不會在應用程序運行之間混淆文件系統。雖然在MP3等的情況下,可以通過ID3標籤將曲目/藝術家類型信息直接存儲到文件中,而不是使用數據庫。

至於播放文件,請查閱有關其音頻API的Android文檔。這裏有很多很棒的信息,絕對比我在這裏重複的要多得多。

+0

+1這是比我更好的答案。 – 2010-10-21 08:39:15

+0

謝謝。這裏新的,所以看到這樣的評論真的很高興。 – phobos51594 2010-10-21 15:18:23

+0

真的有幫助,謝謝@phobos – marcosbeirigo 2010-10-21 17:43:15

2

我說來存儲它們的最好的地方是在你自己的文件夾,即File("/sdcard/com.example.myapp/sound12345.mp3");


編輯在SD卡作爲單個文件:請參閱phobos51594's answer這是比我更加完整。

1

最好將它們直接保存在文件系統上。你爲什麼要將它存儲在數據庫中?有沒有額外的信息需要與它一起存儲? (如標題,說明等)?如果沒有,我會直接寫入文件系統。

基本上,你可以將它保存到你的應用程序的數據文件夾(共享首選項和sqlite數據庫也存儲在這裏)。然而,我個人認爲這應該是不鼓勵的,因爲它減少了/ data分區上的可用memonry(在Android手機上這已經太小了,大多數手機的數據空間不足50 MB(這意味着:少於50 MB應用程序,不能部分移動到SD卡)

如果可能的話,您應該總是安全地處理SD卡上的這些罰款,因此您不會降低數據分區的可用空間太多即使使用Froyo的A2SD功能,並非所有安裝的應用程序的數據都被移動到SD卡上,* .dex文件(通常在應用程序總大小的10%到50%之間)仍然保留在/ data分區上,所以設置和sqlite數據庫因此即使使用A2SD,空間也會越來越小,用戶安裝的應用越多