我的/ 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个字节,并且没有压缩。为什么系统无法获取文件描述符?
答案 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();