在我的應用程序中,我想錄制2秒長的聲音並將其播放回用戶。到目前爲止,我發現的所有例子都要求播放的音頻數據來自文件或來自URL。在Android上錄製和播放聲音時不存儲臨時文件
MediaPlayer和SoundPool類都只接受文件,文件描述符,資源ID或URL作爲輸入,而不僅僅是字節數組。
由於只能將文件寫入SD卡而不是內部存儲器(是這樣嗎?),應用程序會要求安裝和寫入SD卡。但是,如果沒有SD卡存在,我的應用程序也應該工作。
有沒有辦法做到這一點? 謝謝
在我的應用程序中,我想錄制2秒長的聲音並將其播放回用戶。到目前爲止,我發現的所有例子都要求播放的音頻數據來自文件或來自URL。在Android上錄製和播放聲音時不存儲臨時文件
MediaPlayer和SoundPool類都只接受文件,文件描述符,資源ID或URL作爲輸入,而不僅僅是字節數組。
由於只能將文件寫入SD卡而不是內部存儲器(是這樣嗎?),應用程序會要求安裝和寫入SD卡。但是,如果沒有SD卡存在,我的應用程序也應該工作。
有沒有辦法做到這一點? 謝謝
是的,應用程序可以寫入內部存儲器(安裝位置)。每個安裝的應用程序都提供一個Data文件夾來寫入其內部文件。還有一個提供的緩存存儲。
的Context
這些方法可以幫你這些目錄:
getCacheDir()
:返回上的文件系統的專用緩存目錄的絕對路徑(注:系統可能會刪除緩存如果存儲空間不足 )
getDir(String name, int mode)
:檢索,創建(如果需要)應用程序可以放置自己的自定義數據文件的新目錄。
也有用於外部存儲的方法:getExternalCacheDir()
但不可靠的,因爲外部存儲設備可能不總是存在的。
另外,如果你只需要編寫應用程序的內部數據目錄中的文件,有一個很簡單的方法:
偉大的,以防萬一任何人需要這個:回放文件,我現在使用mediaPlayer.setDataSource(openFileInput(「some_file」)。getFD()) – iseeall
您可以使用 「getApplicationContext()getFilesDir()getAbsolutePath(。 )' 以獲取應用程序安裝目錄的路徑。 一個限制是,'getFilesDir()'爲您提供了文件系統上用openFileOutput(String,int)創建的文件存儲目錄的路徑。
您的應用可以將文件寫入_own_內部數據和緩存文件夾。對於大文件,建議不要使用內部存儲,並且請注意,系統會在需要更多空間時刪除緩存。 –
謝謝!你能否寫下你的回答作爲答案,以便我能接受它。 – iseeall
添加爲答案。 –