FileNotFoundException,MediaPlayer.create()从/ res / raw读取

时间:2013-04-05 22:37:18

标签: android android-mediaplayer android-resources

我的/ res / raw目录中有一个名为keyclick.wav(/res/raw/keyclick.wav)的小型解压缩.wav文件。

但是,我偶尔会看到抛出的异常导致活动崩溃:

java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at ...
android.content.res.AssetManager.openNonAssetFdNative(Native Method)
android.content.res.AssetManager.openNonAssetFd(AssetManager.java:427)
android.content.res.Resources.openRawResourceFd(Resources.java:857)
android.media.MediaPlayer.create(MediaPlayer.java:662)

它说“它可能已被压缩”,但我已经仔细检查过,它没有被压缩。

这是我实例化MediaPlayer的方式:

this.clickPlayer = MediaPlayer.create(this.getActivity(), R.raw.keyclick);

我上传了该文件,您可以直接看到它:

http://inadaydevelopment.com/stackoverflow/keyclick.wav

该文件只有664个字节,并且没有压缩。为什么系统无法获取文件描述符?

1 个答案:

答案 0 :(得分:1)

Kenny,您是否尝试过使用此方法播放文件:

MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.keyclick);
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();