我试图播放存储在资产目录中的音频文件,但在我读取文件之前,我收到错误“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