0

/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 バイトで、圧縮されていません。システムがファイル記述子の取得に失敗するのはなぜですか?

4

1 に答える 1

1

Kenny, have you tried playing the file using this approach:

MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.keyclick);
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
于 2013-04-06T01:49:20.457 に答える