mobile apps con android - lo stretto digitale

Download MOBILE APPS con ANDROID  - Lo Stretto Digitale

If you can't read please download the document

Upload: lostrettodigitale

Post on 16-Apr-2017

494 views

Category:

Mobile


0 download

TRANSCRIPT

MOBILE APPS con ANDROIDWorkshops 2014

MESSINA Libreria Colapesce, via - 12/07/2014

LUIGI DE FRANCESCO

Studente in Ingegneria Informatica e delle Telecomunicazioni D.M. 509.

Lavoratore presso Negg S.r.l. Come sviluppatore Desktop in Qt e Mobile Android.

Da sempre appassionato di Informatica. All'attivo le mie conoscenze sui linguaggio annoverano:

Qt, Java, Android, XML, JSON, Javascript, jQuery, MySQL, HTML5, CSS3, C, C++

LUIGI DE FRANCESCO

https://twitter.com/tux_pro

https://it.linkedin.com/in/luigi.defrancesco

https://twitter.com/tux_pro

[email protected]

Sviluppare un App Android

Per sviluppare Applicazioni Mobile Android, occorre conoscere /avere:

Java ( nello specifico bisogna sapere come gestire i vettori di dati, come gestire le classi, come funzionano i linguaggi orientati agli oggetti, come funzionano e cosa sono i thread )

XML ( per gestire al meglio le GUI )

Concetti base sul framework Android ( Per capire come far interagire al meglio l'utente finale con l'app )

Un ambiente di sviluppo come ECLIPSE + SDK Android, Android Studio, ecc...

Tanta PAZIENZA!!

Testare un App Android

Una volta realizzata la nostra App, indispensabile provarla.

Le modalit di debug (individuazione di errori e test di funzionalit dell'app ) sono due:

AVD ( Android Virtual Device ) un dispositivo virtuale che pu essere creato dall'SDK Android che possiamo scaricare dal sito, e che provvedere a dare a chi non ha un cellulare/tablet android, di poterlo emulare sul proprio computer. Svantaggi? Lentezza, Funzionalit, un dispositivo Virtuale che per non virtualizza i problemi dei dispositivi reali.

Device Android Fisico: in questa modalit basta abilitare la modalit debug sul telefonino (Impostazioni->Opzioni Sviluppatore->Debug USB), e collegare il dispositivo fisico al PC. Eclipse si accorger del device android collegato ed installare l'app sul telefonino.

Individuare i Bug

Una volta installata ed avviata l'app sul dispositivo, scientificamente comprovato che, a seconda del grado di complessit dell'app, si possano avere uno o pi crash.

Utilizzando lo strumento LogCat di Eclipse ( aggiunto grazie all'SDK Android ), possibile vedere chi ha generato l'errore ed il perch avvenuto.

In pratica ci dir in quale file java ed a quale riga presente il bug, ed il tipo di errore. Uno dei pi comuni il NullPointerException.

Hello Android !

Come ogni linguaggio che si rispetti, cominciamo a scrivere un app che in una label scriva: Hello Android!

Per farlo, tramite il tool di disegno messo a disposizione da Eclipse e dal plugin dell'SDK Android, trasciniamo una TextView dentro la finestra di Layout. Una volta fatto, andiamo nel codice MainActivity.java, e scriviamo

TextView testo = (TextView) findViewById(R.id.textView1);

testo.setText(Hello Android!);

Segue un Esempio Live.

Costruire una GUI Layout

Nell'atto di costruire una GUI, indispensabile conoscere i Layout.I Layout sono degli strumenti che consentono allo sviluppatore l'impostazione grafica di una interfaccia. I principali sono:

RelativeLayout: ovvero i widget da inserire sono posizionati in modo relativo, questo significa che non cambiano dinamicamente in base alla schermata, ma hanno una posizione fissa scelta da noi.

LinearLayout: un layout lineare, ovvero le posizioni dei widget si auto-riadattano in base alla dimensione della schermata, in modo da prendere tutto lo spazio possibile. Questi Layout a loro volta si suddividono in Horizontal e Vertical in base all'orientamento scelto.

GridLayout: come dice la parola stessa, si tratta di un Layout a Griglia, dove i widget vengono posizionati a matrice, di dimensione variabile in base alle esigenze.

Activity ed Intent Parte 1

Qualunque app nello store possiede una o pi GUI (finestre) che mostrano, a seconda delle esigenze dell'utente, diverse informazioni.Queste GUI vengono chiamate Activity, ed ognuna di loro linkata ad una classe che estende la classe Activity.

Quando si crea un nuovo progetto, Eclipse aggiunge sempre una Activity che chiama MainActivity, l'activity che l'app avvier per prima.

Un'Activity viene creata direttamente da Eclipse seguendo i comandi: New->Others->Android->Android Activity, nei men a seguire ci saranno tutte le opzioni per configurare al meglio l'activity che vi serve.

Una volta creata, la classe si presenter cos:

Public class MiaActivity extends Activity{

La parola extends, significa che estende la classe Activity, ovvero che ne eredita i metodi, ed ha il permesso di sovrascriverli.

Activity ed Intent Parte 2

Il metodo pi importante da sovrascrivere il metodo OnCreate che si presenta di solito in questo modo:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mia);}

Il comando setContentView, collega la classe ad una GUI che abbiamo creato per la visualizzazione. Da qui si capisce che tutto il codice che deve comandare le interfacce grafiche deve stare all'interno di questo metodo.

Una volta descritto come creare una Activity, giunto il momento di capire come avviarla dalla MainActivity.

Activity ed Intent Parte 3

Supponiamo di avere due Activity:MainActivity e MiaActivity, dove la prima deve avviare la seconda. Andiamo nel metodo OnCreate di MainActivity e scriviamo:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mia);

Intent miaactivity = new Intent(this, MiaActivity.class);startActivity(miaactivity);}

Il codice che abbiamo visto avvia MiaActivity, per cui un Activity pu richiamare un'altra Activity, generando cos uno Stack (Pila) che conterr l'ordine di avvio delle Activity. L'ordine serve per quando si preme il tasto BACK sul telefonino, per tornare indietro in modo ordinato, tra le activity che sono state avviate.

Eventi

Se volessimo avviare MiaActivity solo in base all'avvenimento di un evento, avremmo l'opportunit di visualizzare dati anche su MainActivity.Per esempio MiaActivity potrebbe essere avviata dal click dell'utente su di un pulsante ( Button ) in tal caso, dopo aver creato la GUI, basta scrivere nel metodo OnCreate:Button btn = (Button) findViewById(R.id.Button1);

Btn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){Intent miaactivity = new Intent(this, MiaActivity.class);startActivity(miaactivity);}

});

Passaggio di Parametri tra Activity - Intent

Essendo che una Activity una classe, possibile passare dei parametri tra una classe ed un altra. I metodi per trasferire dati sono due, una sfrutta gli intent, e l'altra sfrutta una delle propriet delle classi.

INTENT

Per trasferire dati da una Activity ad un altra basta scrivere il seguente codice:

Intent miaActivity = new Intent(this, MiaActivity.class);miaActivity.putStringExtra(valore1, ciao);startActivity(miaActivity);

Nel metodo onCreate di MiaAcitivity possiamo leggere il valore di cui sopra cos

String valore1 = getIntent().getStringExtra(valore1);

In questo modo si possono passare facilmente i valori da una Activity ad un altra.

Passaggio di Parametri tra Activity - Classi

Il metodo che sfrutta le propriet delle classi, un metodo sviluppato da me per aumentare la stabilit delle app, sfrutta i principi di visibilit publica dei metodi delle classi. In pratica consiste nel creare un metodo GET (che chiameremo getValore() ) il quale restituisca la variabile di nostro interesse, per poi riprenderlo nell'activity MiaActivity. Un esempio pratico:

- MainActivitySi dichiare globalmente la variabilepublic static String valore1;

Nel metodo del button, al posto del putStringExtra si scrivevalore1 = ciao;

- MiaActivity

String valoreLetto = MainActivity.getValore();

Manifest

Il file Manifest, da non sottovalutare, il manifesto dell'app. In esso sono presenti:

-Impostazioni delle versioni di Android dove l'app pu essere installata-Impostazione dello style dell'app-Lista permessi che l'app android pu avere-Lista delle Activity presenti e loro interazione-Impostazione Activity di avvio-Impostazione dell'orientamento dell'app ( Potrait Landscape )

Per chiarire meglio la questione dei permessi. Le app, per obbligo di privacy sia dell'utente che dello sviluppatore, descrive esattamente ci che andr a fare. Per per le funzioni relative alla gestione dei dati utenti e delle periferiche, l'app ha bisono di essere abilitata alla gestione. Per farlo richiede dei permessi che il sistema operativo mette a disposizione per le app. In questo modo l'accesso ai dati controllato, per cui se qualche App con descrizione fatiscente, dice che pu accedere ai vostri dati, state attenti, perch potrebbe rubarvi tutte le vostre foto, messaggi, ecc....

Ottenere dati da Server

Nelle varie commissioni che si potrebbero ottenere, circa il 98% necessita di una connessione al server del committente per poter fare il retrieve dei dati da visualizzare nell'app e per impostare delle azioni lato server.

Android impedisce nel MainThread ( chiamato UiThread ) di poter effettuare connessioni o richieste Http. Per ovviare a questo problema, si utilizzano i Thread oppure gli AsyncTask.

Per qui giunge un nuovo problema, ovvero che Android impedisce ai thread di poter gestire direttamente gli elementi grafici, per poterlo fare bisogna utilizzare in modo efficare un metodo ( all'interno del thread ) chiamato runOnUiThread che spesso porta a problematiche maggiori.

Il mio consiglio quello di utilizzare gli AsyncTask.

Ottenere dati da Server - AsyncTask

Consiglio gli AsyncTask perch da una sola classe possibile gestire sia il thread in background, che gli elementi grafici, infatti la classe si definisce cos:

private class LongOperation extends AsyncTask {@Override protected String doInBackground(String... params) {

// codice per la connessione http

return null;

}

@Override protected void onPostExecute(String result) {

// Codice per gestire la GUI

}

Ottenere dati da Server XML vs JSON

Una volta capito come collegarci al server, occorre capire come formattare i dati al fine di poter leggere correttamente i valori ricevuti e poterli interpretare.

I formati di testo utilizzati per dare una semantica ai dati provenienti dal server sono XML e JSON. Di seguito un esempio dei due:

12 Danielle

{"age" : 12, "name" : "Danielle"}

Qual meglio usare. Ci sono diverse filosofie, ma stato generalmente riconosciuto come migliore il JSON. I motivi sono molteplici, maggiormente Human Readable, e l'azione di parsing ( retrieve del dato rispetto ad un valore e ad una semantica precisa ) avviene in tempi brevi.L'XML generalmente pi complesso da leggere, e per i cellualri, la sua elaborazione resta un po' pesante da gestire da parte del processore.

Sviluppare un Progetto - App Rubrica

L'app che avete ricevuto via email stata progetta a scopo didattico per farvi capire alcuni concetti.

Come si comincia un progetto Android? Innanzitutto la fase iniziale fondamentale.

Si parla con la parte committente si seguono alcuni step:

-Verso chi orientata l'app-A cosa serve l'app-Che tipo di servizi deve offrire-Su quali disposiviti deve essere installabile-In quanto tempo deve essere sviluppata

Una volta dato risposta a queste domande, e ad altre qualora ce ne fossero, si stipula, con la parte committente, un allegato tecnico al quale entrambi le parti si devono attenere. Niente deve essere fatto n in pi n in meno rispetto a quanto scritto nell'allegato Tecnico.

Sviluppare un Progetto - App Rubrica

Una volta ottenute le risposte e firmato l'allegato tecnico, si COMINCIA!

Prendiamo carta e penna e cominciare a buttare gi delle idee sul come gestire e sviluppare l'app.

La cosa migliore utilizzare il concetto e la fisolofia di lavoro dell' FTD ( First Time Development ). Ovvero cercare di suddividere l'app in piccoli problemi, ed una volta individuati creare delle micro-app, che li risolvono poco alla volta. L'unione di questi problemi creare l'app stabile che poi verr pubblicata.

La fisolofia dell' FTD prende spunto dal concetto di DIVIDE ET IMPERA, ovvero, dividi ed elaborare, suddividere l'app in micro-app al fine di roslvere tutti i problemi subito, prevenendo cos la generazione di errori la cui individuazione porrebbe dei problemi.

Analizziamo l'app

Sviluppare un Progetto - Consigli

Nello sviluppare applicazioni, sicuramente non si esenti dall'avere problemi.

A cominciare da Eclipse a finire con i propri dispositivi, c' da diventare matti, per mantendo la calma ed utilizzando il guru di tutto.... Google .i problemi possono sempre essere risolti.

Spesso per ci si trova ad errori o bug che sembrano davvero assurdi, di conseguenza la nostra reazione a questi errori sar..................................................................................................................................................................................................

Sviluppare un Progetto - Consigli

Passato il momento di sconforto, bisogna ricordarsi una famosissima frase di Jack Sparrow:Il problema non il problema, il problema il tuo atteggiamento nei confronti del problema, comprendi?

Conclusioni e Consigli

Per concludere ecco un elenco dei siti da utilizzare al fine di reperire tutte le info che servono per realizzare un app:

-www.google.com ( manco a dirlo )

-stackoverflow.com

-www.androidhive.com (quest'ultimo contiene molteplici tutorial che aiutano da morire i newbie )

GRAZIE!

https://twitter.com/StrettoDigitale - #glsd