BitmapFactory.decodeStream возвращает ноль (изображение в jar-файле)

Я пытаюсь обменять изображения с Unity3d на Java.

От Unity я отправляю:

var filePath = System.IO.Path.Combine(Application.streamingAssetsPath, scene.thumbnail.name + ".jpg");

Это возвращает следующий путь в Android (видно через log.i):

jar:file:///data/app/com.package.name/base.apk!/assets/image_1.jpg

Я сейчас пытаюсь декодировать это изображение в растровое изображение:

 InputStream stream =  this.getClass().getClassLoader().getResourceAsStream("/assets/image_1.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(stream);
        if (bitmap != null)
            imageItems.add(new ImageItem(bitmap, "Image#" + i));

Однако растровое изображение всегда равно нулю. Что мне не хватает? Я имею в виду неправильный путь? Как я могу сказать Java для декодирования файла в пути, который обеспечивает Unity? Спасибо!!

1 ответ

Решение

Я понял:)

Мне пришлось использовать AssetManager:

AssetManager assetManager = getAssets();
InputStream stream;

try {

            stream = assetManager.open(imagePathList.get(i));

            Bitmap bitmap = BitmapFactory.decodeStream(stream);

            if (bitmap != null)
                imageItems.add(new ImageItem(bitmap, "Image#" + i));

        } catch (IOException ex) {

            return null;

}
Другие вопросы по тегам