16

内部でいくつかの静的リソース(画像/xmlなど)を必要とするAndroidライブラリプロジェクトを構築しています。

次に、これらのリソースをどこに配置し、どのようにアクセスできるのだろうか?

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のように、ライブラリ プロジェクトは未加工のアセットをサポートしていません。次に、リソースをresフォルダーの下に配置する必要があるようです。

Resources.getSystem().getResources()....しかし、私が望むものを得ることができない方法を使用しようとしました。また、この方法では、アプリケーション レベルのリソースではなく、システム レベルのリソースしか取得できないと言われています。

これが真実なら。Contextリソースを取得したい場所ならどこでもオブジェクトの参照を保持する必要があるということですか?

4

2 に答える 2

8

次に、これらのリソースをどこに配置し、どのようにアクセスできるのだろうか?

Android Doc から

ライブラリ プロジェクトに未加工のアセットを含めることはできません

ツールは、ライブラリ プロジェクトでの未加工のアセット ファイル (assets/ ディレクトリに保存されている) の使用をサポートしていません。アプリケーションで使用されるすべてのアセット リソースは、アプリケーション プロジェクト自体の assets/ ディレクトリに格納する必要があります。ただし、res/ ディレクトリに保存されたリソース ファイルはサポートされています。

ドキュメント参照リンク: LibraryProjects

解決策 : アプリケーション プロジェクトからライブラリ プロジェクトの res/ ディレクトリに保存されているリソース ファイルにアクセスする方法

注:ライブラリ プロジェクト自体からリソースにアクセスする場合は、リソースをres/ directorynot in に追加しassetsます。アセット内のファイルは .jar ファイルにバンドルされないためです。ファイルで生成された参照を使用して、通常どおりアクセスできR.javaます。

例: drawable を使用して画像にアクセスするには

R.drawable.image_name

リソースを取得したい場所ならどこでも Context オブジェクトの参照を保持しなければならないということですか?

リソースにアクセスするには、コンテキストへの参照を保持する必要があります

アップデート:

Android ライブラリ プロジェクトは、Java クラスのみをバンドルできる古い jar (Java アーカイブ) ファイルの代わりに、ライブラリ プロジェクトに必要なリソース ファイルをバンドルできる aar (Android アーカイブ) ファイルとして生成できるようになりました。

于 2013-04-17T06:57:47.483 に答える
0

または、Eclipse でリンク フォルダーを使用して、アセット フォルダーを新しいプロジェクトにリンクすることもできます。

于 2014-10-29T23:44:14.937 に答える