BitmapRegionDecoder для чтения OBB с помощью APK Expansion ZIP Library
Я пытаюсь прочитать растровое изображение из файла OBB, используя BitmapRegionDecoder вместе с расширением APK Zip Library следующим образом.
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, так как мне нужно выложить очень большое изображение и, следовательно, мне придется создавать новый поток для каждой плитки (так как я не знаю, как "перемотать"). Кажется, это вызывает сборку мусора очень часто. На данный момент мое лучшее решение - распаковать файлы и затем прочитать их оттуда. Но это удваивает размер данных на устройстве.
Кто-нибудь успешно использовал BitmapRegionDecoder с файлами OBB?