Android アセットの使用
"アセット" では、テキスト、xml、フォント、音楽、ビデオなどの任意のファイルをアプリケーションに含める方法が提供されます。 これらのファイルを "リソース" として含めようとすると、Android によってそれらが処理されリソース システムになり、生データを取得できなくなります。 手つかずのデータにアクセスする場合、アセットがそれを行う 1 つの方法となります。
プロジェクトに追加されたアセットは、AssetManager を使用してアプリケーションから読み取ることができるファイル システムと同じように表示されます。
この簡単なデモでは、プロジェクトにテキスト ファイル アセットを追加し、AssetManager
を使用してそれを読み取り、TextView に表示します。
プロジェクトにアセットを追加する
アセットはプロジェクトの Assets
フォルダーに入ります。 read_asset.txt
という新しいテキスト ファイルをこのフォルダーに追加します。 "I came from an asset!" のようなテキストをその中に配置します。
Visual Studio では、このファイルのビルド アクションが AndroidAsset に設定されている必要があります。
正しい BuildAction を選択すると、コンパイル時にファイルが確実に APK にパッケージ化されます。
アセットの読み取り
アセットは、AssetManager を使用して読み取られます。 AssetManager
のインスタンスは、アクティビティなど、Android.Content.Context
の Assets プロパティにアクセスすることで使用できます。
次のコードでは、read_asset.txt アセットを開き、その内容を読み取り、TextView を使用して表示します。
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Create a new TextView and set it as our view
TextView tv = new TextView (this);
// Read the contents of our asset
string content;
AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("read_asset.txt")))
{
content = sr.ReadToEnd ();
}
// Set TextView.Text to our asset content
tv.Text = content;
SetContentView (tv);
}
バイナリ アセットの読み取り
上記の例での StreamReader
の使用は、テキスト アセットに最適です。 バイナリ アセットの場合は、次のコードを使用します。
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Read the contents of our asset
const int maxReadSize = 256 * 1024;
byte[] content;
AssetManager assets = this.Assets;
using (BinaryReader br = new BinaryReader (assets.Open ("mydatabase.db")))
{
content = br.ReadBytes (maxReadSize);
}
// Do something with it...
}
アプリケーションの実行
アプリケーションを実行すると、次のようになるはずです。