2014-01-10 98 views
0

我正在創建一個android應用程序,它是一個方言詞典。我的問題是我不知道如何在數據庫中存儲audio.mp3文件。如何在sqlite中存儲mp3文件?

任何人都可以教我或分享一些如何使它的代碼?

+4

尊敬的用戶,MP3的,不應該被保存在數據庫中。讓它存儲在本地存儲中。讓數據庫只有這個MP3的路徑。 –

+0

你能給我一些代碼嗎? – Loki11

+0

相關:[存儲Android SQLite](http://stackoverflow.com/q/9140952/1597744) –

回答

0

根據您的要求,假設您已將您的5個mp3存儲在存儲在文件夾(或目錄)「MySongs」中的SDCard中。所以,只需掃描文件夾,

File[] myFiles; 
File pathToMySongs = new File(
       Environment.getExternalStorageDirectory() + "/MySongs"); 
if(pathToMySongs.exists()) 
{ 
    myFiles = pathToMySongs.listFiles(); 
} 
else 
    Toast.makeText(getBaseContext(), "No files found.", Toast.LENGTH_SHORT).show(); 

到現在爲止,您將獲得該文件夾中的所有文件。現在,只需使用每個循環的路徑添加到數據庫中,像

for(File file : myFiles) 
{ 
    String path = file.getAbsolutePath(); 
    // apply your logic of inserting in database here 
} 

檢查本教程developer.android.comhttp://developer.android.com/training/basics/data-storage/databases.html

它教導如何創建數據庫和數據庫中的所有CRUD操作。

+2

請正確閱讀該問題...... !!! – Kitkat

+0

我正確理解問題,現在我正在嘗試您的所有評論。因爲我需要它如此糟糕。請理解我,如果你認爲我得到它緩慢因爲我只是一個初學者,我沒有關於android的背景。 – Loki11

+0

@Kitkat我按照我理解的要求回答。您應該能夠知道用戶仍然是Android開發人員的初學者。他需要適當的指導,包括一些示例代碼和一些參考。 –

2

雖然您可以使用BLOB數據類型來存儲它,但我強烈建議您將其存儲在SD卡上並將其路徑存儲在數據庫中。這樣可以幫助您更快地運行應用程序。存儲介質類型數據文件的

優點是

  • 你的應用程序的總大小得到降低。
  • 它運行得更快,更平滑,因爲使用更少的RAM。

存儲在sqlite的媒體類型數據的缺點是

  • 你的應用程序總規模將得到提高。
  • 您將需要更多的RAM來加載這樣龐大的應用程序。
  • 由於更大的尺寸,需要花費時間分割下載&。
+0

謝謝...但你能給我一些例子。 – Loki11

+0

在某些軟件項目中,這種實現實際上是需要的,其中mp3(或其他類型的二進制文件)的數量很少且有限,並且被視爲配置數據。例如,2或3個短mp3文件用於發出警報聲,並且需要手動通過應用程序安裝傳輸,以及其他配置數據。 –

0

在數據庫中存儲聲音文件的主要原因可能是產品線方法。您可以通過修改數據庫而不是觸摸代碼來開發許多類似的應用程序。

我不評論應用程序的大小,因爲有評論它,我不看它。

是的。您可以將小型聲音文件作爲blob字段存儲在sqlite數據庫中。它運作良好。首先將數據存儲在數據庫中,然後檢索並將其放入臨時文件中。這樣你可以將你的聲音文件存儲在數據庫中。

檢查:

//soundData is mp3 byte array taken from sqlite as blob 

soundDataFile = File.createTempFile("sound", "sound"); 
FileOutputStream fos = new FileOutputStream(soundDataFile); 
fos.write(soundData); 
fos.close(); 

mediaPlayer.reset(); 
mediaPlayer.setDataSource(soundDataFile.getAbsolutePath()); 
mediaPlayer.prepare(); 
mediaPlayer.start();