如何访问资源的机器人库项目如何访问资源的机器人库项目(how to access resources

2019-05-12 06:48发布

我建立一个机器人库项目,需要一些静态资源(图片/ XML和等)内部。

然后,我不知道在那里我可以把这些资源,以及如何访问它们?

因为我把资源的assets文件夹中。 我用的是AssetManager访问资源:

public class DataProvider {
    byte[] getDrawableData(int num) {
        AssetManager am = Resources.getSystem().getAssets();
        InputStream is = null;
        try {
            is = am.open("t.jpg");
        } catch (IOException e) {
            return "".getBytes();
        }
        if (is != null) {
            Drawable dw = Drawable.createFromStream(is, null);
            Bitmap bm = ((BitmapDrawable) dw).getBitmap();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            return stream.toByteArray();
        }

        return "".getBytes();
    }
}

不过,我得到了错误: W/System.err(19583): java.io.FileNotFoundException: t.jpg

问题是什么?


正如Sankar V表示,库项目不支持原始资产。 然后,看来我得把resurces下res文件夹。

但我曾尝试使用Resources.getSystem().getResources()....方法不能得到我想要的东西。 而人们说,这种方法只能获得系统级资源,而不是应用程序级别的资源。

如果这是事实。 这是否意味着我必须保持的参考Context对象的任何地方我想要得到的任何资源?

Answer 1:

然后,我不知道在那里我可以把这些资源,以及如何访问它们?

从Android的Doc的

库项目不能包含原始资产

该工具不支持在库项目中使用的原料资源文件(保存在资产/目录)。 应用程序使用的任何资产资源必须存储在应用项目本身的资产/目录。 然而, 保存在res /目录下的资源文件的支持

文档参考链接: LibraryProjects

解决方案: 如何访问从应用程序项目保存在库项目的RE /目录下的资源文件

注意:如果您要访问的库项目本身的资源的资源添加到res/ directory不是assets 。 因为在资产中的文件将不会与.jar文件捆绑在一起。 您可以使用所产生的参考访问它像往常一样R.java文件。

例如:要访问绘制使用图像

R.drawable.image_name

这是否意味着我必须保持上下文对象的任何地方我想任何资源的参考?

真的是你应该持有一个参考上下文访问资源

更新:

现在的Android库项目可以作为AAR生成(Android的归档)文件,它允许你捆绑所需库项目,而不是旧的jar(Java归档)文件,该文件只允许您以捆绑Java类的资源文件。



Answer 2:

或者你可以使用Eclipse中链接的文件夹,和整个链接你的资产文件夹到您的新项目。



文章来源: how to access resources in a android library project