看教程,在Eclipse+ADT環境下開發Android應用多數都把音視頻之類的文件放在res/raw
目錄下,但是在AS環境下沒法這麼幹,後來發現AS開發中多把這類文件放在與 res
目錄同級的 assets
目錄下,因爲系統在編譯的時候不會編譯 assets
下的資源文件,這樣的話就沒法用R.xxx.id
來索引文件了。Android系統提供了一個AssetManager
工具類,可以通過getAssets()
方法獲取AssetManager
對象,像我這樣的初學者可以用下面最基本的用法。
假如assets
文件夾下有sample.mp3
文件需要使用,可以用下面的方法引用:
AssetFileDescriptor afd = getAssets().openFd("sample.mp3");
一些方法可以直接使用 AssetFileDescriptor 類型,比如:
SoundPool.load(AssetFileDescriptor afd, int priority)
MediaPlayer.setDataSource (AssetFileDescriptor afd) //Added in API level 24
如果有些時候沒法使用這種類型的話,可以轉換爲更常用的FileDescriptor類型:
FileDescriptor fd = getAssets().openFd("sample.mp3").getFileDescriptor();
像下面的這種情況就可以使用這種類型了:
MediaPlayer.setDataSource (FileDescriptor fd)
更詳細用法直接看Android API AssetManager 吧。