2

一連のサウンドファイルを含む拡張ファイルがあります。長いものは.mp3ファイルで、短い効果音は.wavファイルです。圧縮せずに.zipファイルにパックします。Googleが提供するZipファイルリーダーとダウンローダーライブラリを使用しています。

私は次のようにサウンドファイルを開いています:

MediaPlayer mPlayer;

...
AssetFileDescript asd = expansionFile.getAssFileDescriptor(fileName);
FileDescriptor soundFile = asd.getFileDescriptor();
mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(soundFile);
mPlayer.prepare();
mPlayer.start();

奇妙なことに、毎回同じサウンドファイルが再生されます。それはそれが最初に見つけたものは何でもあるようです。とのバイトサイズはasd.getDeclaredLength()asd.getLength()まさにそれがどうあるべきかです。これは、ファイル記述子が少なくともファイルを検出していることを意味しますが、何らかの理由で、MediaPlayerは決定したランダムファイルを再生します。

私はここで何が欠けていますか?どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

5

zipファイルに複数のファイルが含まれている場合を除いて、最初の概算は正しいです。次を使用する必要があります。

mPlayer.setDataSource(asd.getFileDescriptor(), asd.getStartOffset(), asd.getLength());

この他の質問からより多くの情報を得ることができます: アセットディレクトリからオーディオファイルを再生する

また、メディアプレーヤーへのsetDataSourceの直後にAssetFileDescriptorを閉じることを忘れないでください。

asd.close();

http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource%28java.io.FileDescriptor,%20long,%20long%29

于 2012-07-04T21:17:22.357 に答える