我一直在开发一个应用程序,需要播放的声音和有.wav格式的声音文件的大集合,吹嘘约1 1GB大小。我遵循了制作扩展文件的官方文档。
首先,我做了一个0压缩的.zip文件,所有的.wav文件都在这个文件下(没有任何子文件夹。包中包含了所有的声音文件).Then我将.zip文件夹重命名为.obb。之后,我将.obb文件放在共享存储obb文件夹下的应用程序文件夹中(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。任何帮助都将不胜感激。谢谢
发布于 2017-05-12 15:07:38
好了,它终于起作用了。更改为后:
AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("Sounds/p25_1.wav");它现在起作用了。奇怪的是,我不得不添加声音,这是压缩之前的文件夹名称(实际上我压缩了这个文件夹,所有的.wav都在它下面)。我想压缩器在.zip里做了另一个子文件夹。
不管怎样,谢谢你的帮助。
https://stackoverflow.com/questions/43930537
复制相似问题