内部でいくつかの静的リソース(画像/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
リソースを取得したい場所ならどこでもオブジェクトの参照を保持する必要があるということですか?