从扩展文件播放声音文件

时间:2012-07-02 19:42:44

标签: android android-mediaplayer android-resources apk-expansion-files

我有一个包含一系列声音文件的扩展文件。较长的是.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会播放它决定的任何随机文件。

我到底错过了什么?任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:4)

第一个近似是正确的,除了当zip文件包含多个文件时,你应该使用:

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

您可以从其他问题中获取更多信息: Play audio file from the assets directory

请还记得在setDataSource之后关闭AssetFileDescriptor到媒体播放器:

asd.close();

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