我試圖播放存儲在資產目錄中的音頻文件,但在我讀取文件之前,我收到錯誤「error occured java.io.FileNotFoundException:track.mp3」。以下是我的閱讀方式:從Android上的資產中讀取音頻文件
AssetFileDescriptor afd = getAssets().openFd("track.mp3");
我在網上看了很多描述,但沒有成功。
我試圖播放存儲在資產目錄中的音頻文件,但在我讀取文件之前,我收到錯誤「error occured java.io.FileNotFoundException:track.mp3」。以下是我的閱讀方式:從Android上的資產中讀取音頻文件
AssetFileDescriptor afd = getAssets().openFd("track.mp3");
我在網上看了很多描述,但沒有成功。
我覺得這個代碼應該爲你工作:
AssetFileDescriptor afd = getAssets().openFd("track.mp3");
MediaPlayer player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
player.prepare();
player.start();
否則,檢查文件是否是在正確的文件夾,名稱爲「track.mp3」。
好吧,正如我所說的,在我甚至使用MediaPlayer對象之前,我得到了FileNotFoundException。在打開AssetFileDescriptor後拋出。 – SimpleMan
這是我正在使用的代碼路徑,但它不起作用:http://stackoverflow.com/questions/9124378/mp3-audio-in-the-android-assets-folder-fails-to-play-from -a-signed-and-zip-align –
右鍵單擊「track.mp3」文件,使用「重構」>「移動」命令,將文件移動到另一個目錄(例如「res」)。使用相同的命令,將它移回到「資產」目錄。對我而言,它有效。
這對我無效。 –
Android準則建議音頻使用res/raw
文件夾。所以一定要確保所有的音頻在那裏,當你讀,你可以使用這個方法:
void playAudio(Context mContext, String sound){
new AudioPlayer().play(mContext, mContext.getResources().getIdentifier(
sound,"raw", mContext.getPackageName()));
}
如果你需要的東西線的音頻播放器,然後看看MediaPlayer
你也可以把它存儲在原始目錄下的res,這樣你可以更容易地加載到媒體播放器,因爲你可以提供一個res ID。 – Peterdk
不幸的是我需要播放大量文件,所以我不想在我的資源中跟蹤每一個文件。 – SimpleMan