2011-12-11 92 views
0

我試圖播放存儲在資產目錄中的音頻文件,但在我讀取文件之前,我收到錯誤「error occured java.io.FileNotFoundException:track.mp3」。以下是我的閱讀方式:從Android上的資產中讀取音頻文件

AssetFileDescriptor afd = getAssets().openFd("track.mp3"); 

我在網上看了很多描述,但沒有成功。

+0

你也可以把它存儲在原始目錄下的res,這樣你可以更容易地加載到媒體播放器,因爲你可以提供一個res ID。 – Peterdk

+0

不幸的是我需要播放大量文件,所以我不想在我的資源中跟蹤每一個文件。 – SimpleMan

回答

-1

我覺得這個代碼應該爲你工作:

AssetFileDescriptor afd = getAssets().openFd("track.mp3"); 

MediaPlayer player = new MediaPlayer(); 
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
player.prepare(); 
player.start(); 

否則,檢查文件是否是在正確的文件夾,名稱爲「track.mp3」。

+0

好吧,正如我所說的,在我甚至使用MediaPlayer對象之前,我得到了FileNotFoundException。在打開AssetFileDescriptor後拋出。 – SimpleMan

+0

這是我正在使用的代碼路徑,但它不起作用:http://stackoverflow.com/questions/9124378/mp3-audio-in-the-android-assets-folder-fails-to-play-from -a-signed-and-zip-align –

0

右鍵單擊「track.mp3」文件,使用「重構」>「移動」命令,將文件移動到另一個目錄(例如「res」)。使用相同的命令,將它移回到「資產」目錄。對我而言,它有效。

+0

這對我無效。 –

0

Android準則建議音頻使用res/raw文件夾。所以一定要確保所有的音頻在那裏,當你讀,你可以使用這個方法:

void playAudio(Context mContext, String sound){ 
    new AudioPlayer().play(mContext, mContext.getResources().getIdentifier(
      sound,"raw", mContext.getPackageName())); 
} 

如果你需要的東西線的音頻播放器,然後看看MediaPlayer