2011-12-11 91 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