BitmapRegionDecoder使用APK扩展ZIP库读取OBB

时间:2017-12-09 10:21:51

标签: android apk-expansion-files bitmapregiondecoder

我正在尝试使用BitmapRegionDecoder和AP​​K扩展Zip库从OBB文件中读取位图,如下所示。

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(cont,1, 1);
AssetFileDescriptor assetFileDescriptor = expansionFile.getAssetFileDescriptor(id);
FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();
BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(fileDescriptor, false);

令我惊讶的是BitmapRegionDecoder抛出IOException,我不知道为什么。使用InputStream时,BitmapRegionDecoder读取请求的位图区域没有问题。

InputStream fileStream = expansionFile.getInputStream(id);
BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(fileStream, false);

我宁愿不使用InputStream,因为我必须平铺一个非常大的图像,因此必须为每个tile创建一个新的流(因为我不知道如何“倒回”)。这似乎经常调用垃圾收集。 现在我最好的解决方案是解压缩文件,然后从那里读取它们。但这会使设备上的数据大小翻倍。

有没有人成功使用过BitmapRegionDecoder和OBB文件?

0 个答案:

没有答案