Introduzione alla programmazione Android - Android@tulug lezione 4
Upcoming SlideShare
Loading in...5
×
 

Introduzione alla programmazione Android - Android@tulug lezione 4

on

  • 385 views

Quarta e ultima lezione del corso android tenuto presso il TuLug (Tuscia Lug) A Viterbo. Le slides sono completamente in italiano (Slides are in italian! Sorry!)

Quarta e ultima lezione del corso android tenuto presso il TuLug (Tuscia Lug) A Viterbo. Le slides sono completamente in italiano (Slides are in italian! Sorry!)

Statistics

Views

Total Views
385
Views on SlideShare
385
Embed Views
0

Actions

Likes
1
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introduzione alla programmazione Android - Android@tulug lezione 4 Introduzione alla programmazione Android - Android@tulug lezione 4 Presentation Transcript

  • Android @Tulug Lezione 4 By IvanGualandri Twitter: @Italialinux
  • Agenda ● Gestione dello storage ● SharedPreferences ● Assets ● SQLite (un occhiata veloce)
  • Riassunto ● Nelle ultime lezioni abbiamo visto, come aggiungere componenti grafici ad un applicazione, come farli interagire mediante bottoni, come utilizzare alcune funzioni specifiche del telefonino (invio/ricezione sms)
  • Introduzione allo storage
  • Introduzione allo Storage ● Android mette a disposizione diverse possibilitá per salvare informazioni persistenti sul telefonino. Le principali sono: ○ SharedPreferences ○ Assets ○ Memoria interna (dentro res) ○ SQLite
  • Introduzione allo Storage/1 ● SharedPreferences: non serve per salvare files, ma per salvare informazioni di configurazione dell'applicazione. O comunque dei dati sotto forma primitiva (numeri, stringhe, etc). ● Esempio? Se l'applicazione è la prima volta che si avvia.
  • ● Assets: Viene usato quando vogliamo salvare i files da utilizzare in maniera "grezza" dall'applicazione. ● Quali per esempio: files di testo, caratteri, brani musicali, etc. ● Se li mettessimo in /res android li proesserebbe mediante il suo resource system. Introduzione allo Storage/2
  • ● SQLite: Un vero e proprio database relazionale, quindi cosa dire di più? Si usa quando le informazioni si possono rappresentare mediante tabelle, e si vogliono fornire funzioni veloci di interrogazione, ordinamento, etc. Introduzione allo Storage/3
  • ● Memoria interna: In questo caso si sfrutta la cartella resources, e quindi il dato risiede nella cosiddetta memoria interna. Rende l'accesso dei dati da parte dell'applicazione più semplice. Il problema è che molti telefonini hanno la memoria interna molto limitata. Introduzione allo Storage/4
  • SharedPreferences...
  • ● Questa modalitá ci permette di salvare dei tipi di dato primitivo nella modalitá: chiave - valore ● Per dati primitivi intendiamo: interi, stringhe, booleani, etc. SharedPreferences
  • ● Esistono due tipi: ○ SharedPreferences: Sono informazioni disponibili per tutte le componenti dell'applicazione ○ Preferences: Sono invece disponibili solamente dalla singola activity Noi vedremo solo le shared. SharedPreferences/2
  • ● Ovviamente le due operazioni che possiamo fare sono leggere o scrivere valori. ● Per la prima basta solo l'accesso all'oggetto SharedPreferences, ● Per la seconda invece dobbiamo utilizzare: SharedPreferences.Editor SharedPreferences/3
  • ● Della creazione/accesso all'oggetto se ne occupa l'applicazione/sistema. quello che dobbiamo fare noi è fornirgli il nome che le identificherá. e la modalitá di accesso. ● MODE_PRIVATE è quella standard. SharedPreferences preferences = this. getSharedPreferences("org.italialinux. profilemanager", Context.MODE_PRIVATE); SharedPreferences/4
  • ● Con preferences a questo punto gia possiamo leggere i dati contenuti al suo interno. I metodi da usare sono: public boolean getBoolean (String key, boolean defValue); public float getFloat (String key, float defValue); public int getInt (String key, int defValue); public long getLong (String key, long defValue); public String getString (String key, String defValue); SharedPreferences/5
  • ● Tutti i metodi hanno una logica simile, prendono due argomenti: ○ key - La chiave con il quale abbiamo salvato il valore ○ defValue - Il valore da tornare nel caso non si fosse trovata la proprietá key. SharedPreferences/5
  • ● Se invece vogliamo modificarne il contenuto, ci serve l'oggetto: ○ SharedPreferences.Editor ● Ci basta chiamare il metodo edit di SharedPreferences: SharedPreferences.Editor editor = preferences.edit(); SharedPreferences/6
  • ● Come prima, per inserire dei dati abbiamo a disposizione i seguenti metodi: public SharedPreferences.Editor putBoolean (String key, boolean value) public SharedPreferences.Editor putString (String key, String value) public SharedPreferences.Editor putLong (String key, long value) Per salvare basta chiamare: SharedPreferences/7
  • ● Esercizio: ○ Fare una app android che identifica se è la prima volta che viene lanciata. ● Suggerimenti: ○ Ci basta un booleano ○ Per salvare dobbiamo usare l'editor SharedPreferences/9
  • Assets...
  • ● Con gli asset salviamo i dati su memoria esterna ● Si utilizzano quando la nostra applicazione deve salvare file che non devono essere cancellati se l'applicazione viene rimossa (foto scattate, video registrati,etc. ) Assets
  • ● Con gli asset salviamo i dati in maniera grezza. ● Si utilizzano quando vogliamo utilizzare, che non devono essere preprocessati dal resource manager, e devono essere letti così come sono. Assets
  • ● Vanno messi all'interno della cartella assets. Assets/2
  • ● La classe che ci permette di gestirli si chiama: AssetManager. ● Anche questa volta ci basta chiederla all'Activity: AssetManager manager = getAssets(); Assets/3
  • ● Per aprire un file possiamo usare il metodo open("filename"), che ci torna un InputStream (da gestire com cone qualsiasi programma java InputStream ims = assetManager.open("image. jpg"); ● Con list("foldername") otteniamo la lista dei files contenuti in una cartella String[] files = assetManager.list("Files"); Assets/4
  • SQLite...
  • ● Si tratta di un database relazionale che non necessita di un server ● Tutto risiede all'interno di un file ● L'interrogazione avviene mediante query sql. SQLite
  • ● Per utilizzare i servizi del database possiamo estendere la classe: SQLiteOpenHelper SQLite/2
  • public class DatabaseManager extends SQLiteOpenHelper { private static final String DATABASE_NAME = "expenses.db" ; private static final int DATABASE_VERSION = 1; ** Create a helper object for the Events database */ public DatabaseManager (Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE expense (" + " _id INTEGER PRIMARY KEY AUTOINCREMENT, " + "dateOfExpense INTEGER, amount REAL, description TEXT NOT NULL);" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS expense"); onCreate(db); } } SQLite/3
  • ● Il metodo onCreate() - Non è quello dell'activity. ● Serve per le operazioni preliminari di creazione del database. ● Questa viene chiamata quando il database non esiste, in occasione della prima operazione di scrittura. SQLite/3
  • ● Il metodo onUpgrade() - Serve quando dobbiamo effettuare operazioni di aggiornamento del database ● Viene chiamato quando cambia il numero definito in: DATABASE_VERSION SQLite/4
  • public Expense[] findAllExpenses() { SQLiteDatabase db = getReadableDatabase(); String sql = “SELECT date_of_expense,amount,description FROM expenses ORDER BY date_of_expense”; Cursor c = db.rawQuery(sql,null); Expense [] result=new Expense [c.getCount()]; c.moveToFirst(); while (!c.isAfterLast()) { Expense expense = new Expense(c.getLong(0),c.getDouble(1), c.getString(2)); result[c.getPosition()]=expense; c.moveToNext(); } c.close(); } SQLite/5
  • ● Per accedere al database abbiamo due metodi: ○ getReadableDatabase(); Ci da accesso in sola lettura ○ getWritableDatabase(); Ci da accesso anche in scrittura ● L'oggetto tornato è un SQLiteDatabase che contiene i metodi per le query. SQLite/6
  • ● Le query possiamo eseguirle con il metodo Cursor c = rawQuery(query, null); ● Ora i risultati sono contenuti all'interno dell'oggetto cursor. ● É importante la chiamata c.moveToFirst(); Altrimenti riceverremo una NullPointerException SQLite/7
  • ● Dopo di che ci basta un ciclo while per navigare fra i risultati della query. SQLite/7