次の方法で共有


Android アセットの使用

"アセット" では、テキスト、xml、フォント、音楽、ビデオなどの任意のファイルをアプリケーションに含める方法が提供されます。 これらのファイルを "リソース" として含めようとすると、Android によってそれらが処理されリソース システムになり、生データを取得できなくなります。 手つかずのデータにアクセスする場合、アセットがそれを行う 1 つの方法となります。

プロジェクトに追加されたアセットは、AssetManager を使用してアプリケーションから読み取ることができるファイル システムと同じように表示されます。 この簡単なデモでは、プロジェクトにテキスト ファイル アセットを追加し、AssetManager を使用してそれを読み取り、TextView に表示します。

プロジェクトにアセットを追加する

アセットはプロジェクトの Assets フォルダーに入ります。 read_asset.txt という新しいテキスト ファイルをこのフォルダーに追加します。 "I came from an asset!" のようなテキストをその中に配置します。

Visual Studio では、このファイルのビルド アクションAndroidAsset に設定されている必要があります。

Setting the build action to AndroidAsset

正しい BuildAction を選択すると、コンパイル時にファイルが確実に APK にパッケージ化されます。

アセットの読み取り

アセットは、AssetManager を使用して読み取られます。 AssetManager のインスタンスは、アクティビティなど、Android.Content.ContextAssets プロパティにアクセスすることで使用できます。 次のコードでは、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...

}

アプリケーションの実行

アプリケーションを実行すると、次のようになるはずです。

Example screenshot