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 AssetManager
e 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:
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.Context
oggetto , 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: