Condividi tramite


Uso di asset Android

Gli asset consentono di includere file arbitrari come testo, xml, tipi di carattere, musica e video nell'applicazione. Se si tenta di includere questi file come "risorse", Android li elabora nel relativo sistema di risorse e non sarà possibile ottenere i dati non elaborati. Se si vuole accedere ai dati non interessati, asset è un modo per farlo.

Gli asset aggiunti al progetto verranno visualizzati esattamente come un file system in grado di leggere dall'applicazione tramite AssetManager. In questa semplice demo si aggiungerà un asset di file di testo al progetto, lo si legge usando AssetManagere lo visualizzerà in un controllo TextView.

Aggiungere asset al progetto

Gli asset vengono inseriti nella Assets cartella del progetto. Aggiungere un nuovo file di testo a questa cartella denominata read_asset.txt. Inserire un testo come "Sono venuto da un asset!".

Visual Studio deve avere impostato l'azione di compilazione per questo file su AndroidAsset:

Setting the build action to AndroidAsset

Se si seleziona buildAction corretto, il file verrà inserito in un pacchetto nell'APK in fase di compilazione.

Lettura di asset

Gli asset vengono letti usando un AssetManager. Un'istanza AssetManager di è disponibile accedendo alla proprietà Assets in un Android.Content.Contextoggetto , ad esempio un'attività. Nel codice seguente si apre l'asset read_asset.txt , si legge il contenuto e lo si visualizza usando un controllo 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);
}

Lettura di asset binari

L'uso di StreamReader nell'esempio precedente è ideale per gli asset di testo. Per gli asset binari, usare il codice seguente:

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...

}

Esecuzione dell'applicazione

Eseguire l'applicazione e dovrebbe essere visualizzato quanto segue:

Example screenshot