我一直在开发一款需要播放声音的应用程序,并且拥有.wav格式的大量声音文件,其大小约为1GB。我已经按照官方文档制作了扩展文件。
首先,我创建了一个压缩为0的.zip文件,所有.wav文件都在该文件下(没有任何子文件夹。这是main.1.package包含所有声音文件)。然后我将.zip文件夹重命名为。 OBB。之后我把.obb文件放在共享存储obb文件夹下的apps文件夹中(com.moinul.app是我的包名,所以文件夹名是它,扩展文件名为main.1.com.moinul.app .obb)
问题是当我尝试从扩展文件中读取文件时,我得到空指针异常:
try
{
String param = (String) v.getTag();
ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, 1, 0);
AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("p25_1.wav");
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(fd.getFileDescriptor());
mPlayer.prepare();
mPlayer.start();
}
catch (Exception e)
{
Log.w(TAG, e.getMessage() + "");
e.printStackTrace();
}
我得到例外说fd为null。任何帮助,将不胜感激。 感谢
答案 0 :(得分:0)
尝试使用:AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("assets/p25_1.wav");
答案 1 :(得分:0)
好的,终于可以了。改成后:
AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("Sounds/p25_1.wav");
现在正在工作。奇怪的是我必须添加Sounds,这是压缩前的文件夹名称(我实际压缩了这个文件夹,所有.wav都在它下面)。我认为压缩器在.zip中创建了另一个子文件夹。
无论如何,谢谢你的帮助。