从Android上的资源中读取音频文件

时间:2011-12-11 19:42:45

标签: android audio assets

我正在尝试播放存储在assets目录中的音频文件,但在我读取文件之前,我收到错误“错误发生java.io.FileNotFoundException:track.mp3”。这是我读它的方式:

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

我在互联网上阅读了很多描述,但没有成功。

4 个答案:

答案 0 :(得分:0)

右键点击“track.mp3”文件,“Refactor”> “移动”命令,将文件移动到另一个目录(例如“res”)。使用相同的命令,将其移回“assets”目录。对我来说,它有效。

答案 1 :(得分:0)

Android指南建议使用音频res/raw文件夹。因此,请确保所有音频都在那里,当您阅读时,您可以使用此方法:

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

如果您需要线路音频播放器,请查看MediaPlayer

答案 2 :(得分:0)

使用此代码

MediaPlayer mediaPlayer = new MediaPlayer();
            AssetFileDescriptor afd;
            try {
                afd = getAssets().openFd("1.mp3");
                mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (IOException e) {
                          Toast.makeText(LearnActivity.this, "Error Playing audio from Asset directory",Toast.LENGTH_SHORT).show();
            }

否则,请检查文件是否在正确的文件夹中且名称为“track.mp3”。

答案 3 :(得分:-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”。