Как декодировать растровые изображения из каталога Asset в Android 7?BitmapFactory.decodeStream from Assets возвращает null на Android 7
Мое приложение работает на Android-версиях вплоть до Marshmallow. С Android 7 не удается загрузить изображения из каталога Asset.
Мой код:
private Bitmap getImage(String imagename) {
// Log.dd(logger, "AsyncImageLoader: " + ORDNER_IMAGES + imagename);
AssetManager asset = context.getAssets();
InputStream is = null;
try {
is = asset.open(ORDNER_IMAGES + imagename);
} catch (IOException e) {
// Log.de(logger, "image konnte nicht gelesen werden: " + ORDNER_IMAGES + imagename);
return null;
}
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, PW, PH);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
// Lesen des Bitmaps in der optimierten Groesse
return BitmapFactory.decodeStream(is, null, options);
}
В результате (только Android 7) BitmapFactory.decodeStream
равна нулю. Он корректно работает с более старыми API-интерфейсами Android.
В режиме отладки я вижу следующее сообщение:
09-04 10: 10: 50.384 6274-6610/MYAPP D/Skia: --- SkAndroidCodec :: NewFromStream возвращенного нулевой
Может ли кто-нибудь сказать мне причину и как исправить кодировку?
Редактировать: Между тем я обнаружил, что удаление первого BitmapFactory.decodeStream с inJustDecodeBounds = true приводит к успешному BitmapFactory.decodeStream впоследствии с inJustDecodeBounds = false. Не знаете причину и не знаете, как заменить измерение размера растрового изображения.
Я предполагаю, что ваша проблема особенно важна для вашего актива. Я только что протестировал [один из моих образцов книг] (https://github.com/commonsguy/cw-omnibus/tree/master/Bitmaps/InSampleSize), который загружает изображения из активов на Nexus 9 под управлением Android 7.0. Кажется, он работает нормально. – CommonsWare