Файлы изображений в корневой папке src отсутствуют в сборке Android (кодовое имя ONE)

Это похоже на этот вопрос, однако моя проблема в том, что изображения есть в симуляторе Codename ONE (изображение может быть загружено и отображается правильно), но когда я делаю сборку Android и пробую ее на своем телефоне, я получаю java.io.FileNotFoundException. Согласно комментарию, данному Шаем Альмогом на упомянутый выше вопрос, это должно сработать.

Что здесь не так? Может быть, имена файлов должны быть все в нижнем регистре или все в верхнем регистре?

(Здесь я опускаю исходный код, потому что, похоже, это проблема с упаковкой, а не с самим кодом.)

ОБНОВЛЕНИЕ: я пытался изменить все имена файлов на строчные, но безрезультатно.


person Axel    schedule 02.02.2014    source источник
comment
@ChrisStratton: Это также относится к Codename ONE или просто к обычной разработке для Android? В документах (Codename ONE-) нет ничего о папке ресурсов...   -  person Axel    schedule 02.02.2014


Ответы (2)


Наконец я узнал, что вы должны открывать файлы как ресурсы (спасибо @ChrisStratton за указание в правильном направлении, в то время как комментарий явно касался разработки SDK для Android).

Это работает:

private static Image loadImage(String path) throws IOException {
    InputStream in=null;
    try {
        // works in simulator but not on device:
        // in = FileSystemStorage.getInstance().openInputStream(path);

        // works on both simulator and device:
        in = Display.getInstance().getResourceAsStream(null, path);
        return Image.createImage(in);
    } finally {
        if (in!=null) {
            in.close();
        }
    }
}
person Axel    schedule 02.02.2014

Вы должны создавать изображения с помощью EncodedImage.create("/fileName") или еще лучше добавить их в файл res, где вы можете использовать формат нескольких изображений: http://www.codenameone.com/how-do-i---выбрать-изображение-из-файла-ресурса---добавить-a-multiimage.html

Подход с входным потоком немного менее эффективен, чем то, что мы можем сделать внутри.

Файлы в каталоге src неявно помещаются в каталог ресурсов для Android в Codename One, поэтому нет необходимости в каталоге ресурсов.

person Shai Almog    schedule 02.02.2014