Questo sito utilizza i Cookie. Clicca su Accetto per consentirne l'utilizzo, altrimenti in Info trovi maggiori informazioni.

Android

Se pensi che questa categoria possa interessare ai tuoi amici condividila come preferisci:



 

Ebbene ho deciso, quasi, ci provo, di imparare a realizzare applicazioni per Android. Credo che la strada sarà lunga e il tempo come sempre poco. Per questo ho deciso di sprecarne il doppio per realizzare anche una serie di articoli o guide sull'argomento ;-)

In effetti lo faccio per vari motivi: il primo è che, se riesco a spiegare un concetto, so che resterà mio a lungo e so che l'ho compreso abbastanza a fondo; il secondo consiste nel realizzare un "archivio" per le mie esperienze, i dubbi e, spero, le soluzioni ai vari problemi inerenti alla programmazione con Android. Il terzo motivo, per fingermi anche un po' altruista, è quello di divulgare le conoscenze che sono riuscito ad accumulare con la speranza di far risparmiare del tempo, a chi come me, volesse cimentarsi in questo tipo di avventura!

Beh, iniziamo... Qui sotto una serie di guide, brevi articoli, progetti sviluppati più o meno a fondo.... Questo in futuro, al momento leggete quel che c'è ;-)

 


Di seguito gli articoli della categoria ed il relativo numero di visite:

Convenzioni Java per costanti e variabili in Android







 

Costanti

 In Android come in Java (trattandosi della parte di codice scritta appunto in Java!!) , si utilizza chiamare le costanti con nomi composti da lettere tutte maiuscole e, se formati da più parole si dovrebbero separare con l'underscore '_' 

Alcuni esempi di costanti che capita spesso di trovare, sono quelle relative ai TAG per i Log e si possono definire così:

   

private final static String TAG_LOG = "MyActivity.class.getName()";

  

  

In questo caso abbiamo definito una costante di nome TAG_LOG che è stata inizializzata (per una costante si deve fare direttamente nella dichiarazione) con il nome della classe MyActivity ottenuto attraverso il metodo getName() applicato all'oggetto MyActivity.class.

Utilizzando la struttura <Classe>.class significa riferirsi ad un oggetto di tipo Class<MiaClasse> che contiene la descrizione della classe MiaClasse e dal quale possiamo estrarre le caratteristiche della stessa, per esempio il nome, con il metodo getName() fornito.

 

 

 

 

Variabili:

Per quanto riguarda le variabili invece, il nome segue la camelNotation, ovvero iniziano con una lettera minuscola e, se composte da più parole, ogni parola che segue ha la prima lettera maiuscola:

 

int nomeDellaMiaVariabileContatore = 0;

 

 

 C'è da specificare che, quando una variabile rappresenta un campo non pubblico e non statico,  per esempio quando è il parametro d'istanza di una determinata classe preceduto dal modificatore private (e non da quello static) si usa mettere come prima lettera una 'm':

 

private int mNomeMiaVariabileContatore = 0;

 

 

segue poi il resto del nome la convenzione della camelNotation.

 

Si ha un altro caso ed è quello in cui una variabile sia statica (preceduta dal modificatore static), ma non final (rendendola, se così fosse, di fatto una costante); qui di usa iniziare il nome con la lettera 's':

 

 

static int sNomeMiaVariabileContatore = 0;

 

 

 

 

Per ulteriori dettagli sullo stille della codifica in Android consiglio di leggere qui la guida ufficialle.

 

 




Se ti è piaciuto questo articolo condividilo come preferisci, oppure lascia un commento!!

Parliamo di come si può essere sicuri che i rimedi si acquista on-line sono sicuri. Senza dubbio, uno dei luoghi emozionante, dove le persone possono acquistare farmaci è Internet. Ci sono farmaci variante per ogni malattie. Kamagra è un farmaco prescritto per il trattamento di diverse denunce. Cosa ne pensi "http://journal-info.net/buy/levitra-online.html "? Dove è possibile avere informazioni dettagliate su "buy levitra online "? Le questioni, come "buy levitra ", si riferiscono a vari tipi di problemi medici. Vivere con la disfunzione erettile può essere un vero problema. Ci sono farmaci variante per risolvere la disfunzione sessuale maschile. Il farmaco è per voi. Mai dare ad altre persone, anche se i loro reclami siano uguali ai suoi.

Javadoc per Applicazioni Android







 

Alle prese con l'applicazione Android che sto realizzando come progetto per un esame (e che sto pensando di rendere disponibile, quando pronta, anche su play store) mi sono scontrato con la creazione dei Javadoc "automatica" resa disponibile da Eclipse.

Andava tutto bene fino a quando non ho iniziato ad utilizzare le librerie private di Google per il supporto delle versioni precedenti...  I problemi riscontrati e per cui sto per proporvi una soluzione sono i seguenti:

  • Impossibilità di allegare la documentazione alle librerie di supporto fornite da Google e importate automaticamente, infatti per queste librerie si ha la voce javadoc non modificabile
  • Esportazione automatica della documentazione javadoc anche per le nostre classi quando queste usano le librerie di supporto private di Google

 

Prima di iniziare voglio sottolineare una cosa che ho letto in rete e per cui ho visto pareri discordanti... In un famoso forum un utente chiedeva se avesse dovuto commentare anche le parti di codice private o protected e, la prima risposta che gli è stata data era un secco e chiaro no. Andando avanti a leggere, ho trovato gente che invece consigliava vivamente di farlo e altri che non sapevano da che parte schierarsi.

Il mio consiglio è quello di commentare sempre e comunque tutto il codice, soprattutto le parti che potrebbero risultare ambigue. Io andrei anche oltre e consiglio di commentare anche le parti che al momento ci sembrano ovvie perchè tra qualche mese potrebbero non esserlo più!

Ovviamente senza essere tediosi, ma cercando di spiegare ogni passaggio importante del nostro codice comprese le parti private o protected, tanto poi, come vedremo dopo, è possibile scegliere il livello di protezione dei javadoc esportati!

 

Allegare la documentazione alla libreria android-support-v4.jar

Come dicevo prima, quando si cerca di visualizzare la documentazione (tramite F2 o soffermandosi sui metodi richiamati) delle librerie private di Google si può ottenere il seguente risultato:

 

 

no Javadoc Attached Image

 

 

Allora  si potrebbe pensare di utilizzare il comando File->Build path -> Libraries per collegare i Javadoc ed i file sorgente, ma ci accorgeremmo che queste voci, se le librerie sono state importate automaticamente dall'ADT (Android Development Tools), non sono modificabili e allora un modo per collegare la documentazione è quello di aggiungere un file denominato android-support-v4.jar.properties nella cartella libs del nostro progetto, dove abbiamo il file android-support-v4.jar. Nell'immagine seguente è indicato dove:

 

 

libsFolder

 

 

 

 

 

Ma cosa contiene questo file?! Nel file dovremo mettere semplicemente i percorsi relativi alla documentazione e ai sorgenti della libreria, ovvero ci scriveremo:

 

doc=[Percorso Base Andoird SDK]/android-sdk-linux/docs/reference
src=[Percorso Base Andoird SDK]/android-sdk-linux/extras/android/support/v4/src

 

Ovviamente queste righe sono scritte per me che utilizzo Ubuntu Linux, ma vanno bene anche per chi è utente MAC; in caso utilizziate Windows dovete solo invertire la direzione delle barre oblique.

Una volta fatto questo è sufficiente riavviare Eclipse e potremo vedere le indicazioni estratte dai javadoc ogni volta che ci soffermeremo su un metodo di queste librerie o che premeremo F2.

 

Esportazione dei javadoc


Utilizzando queste librerie nelle nostre classi potremmo avere un problema nella generazione automatica dei javadoc della nostra applicazione. Ma allora come fare quando abbiamo speso ore ed ore a documentare la nostra applicazione e non riusciamo a generare i javadoc ?!

 

Nessun problema, da Terminale (o da cmd per Windows) possiamo farlo in modo molto semplice. Ora scrivo questa guida per utenti di Linux, ma con qualche modifica dei vari percorsi, anche chi utilizza Windows può farcela!

 

Iniziamo con il raggiungere la cartella del nostro progetto:

 

cd workspace/android/ApplicazioneAndroid/

 

 ora diamo il seguente comando:

 

javadoc -private -d doc -sourcepath src/ -subpackages 
com.example.android.apps.packagePrincipaleNostraApplicazione

 

Con questo comando chiediamo di compilare i Javadoc fino al livello private, ovvero che comprendono anche i metodi, i costruttori, le variabili e quant'altro contrassegnati con private o protected. Volendo possiamo omettere il parametro -private per evitare che questi siano visibili nella documentazione esportata.

La documentazione sarà visibile all'interno del nostro progetto in una cartella denominata doc. Potremmo regolarci così e creare due diverse cartelle, una per la documentazione pubblica e una per quella privata ottenendo le due esportazioni una nella cartella privateDocs e l'altra nella cartella publicDocs con i relativi comandi:

 

javadoc -private -d privareDocs -sourcepath src/ -subpackages 
com.example.android.apps.packagePrincipaleNostraApplicazione

 

per quella privata e:

 

javadoc -d publicDocs -sourcepath src/ -subpackages 
com.example.android.apps.packagePrincipaleNostraApplicazione

 

 per quella pubblica.

 

 




Se ti è piaciuto questo articolo condividilo come preferisci, oppure lascia un commento!!

Parliamo di come si può essere sicuri che i rimedi si acquista on-line sono sicuri. Senza dubbio, uno dei luoghi emozionante, dove le persone possono acquistare farmaci è Internet. Ci sono farmaci variante per ogni malattie. Kamagra è un farmaco prescritto per il trattamento di diverse denunce. Cosa ne pensi "http://journal-info.net/buy/levitra-online.html "? Dove è possibile avere informazioni dettagliate su "buy levitra online "? Le questioni, come "buy levitra ", si riferiscono a vari tipi di problemi medici. Vivere con la disfunzione erettile può essere un vero problema. Ci sono farmaci variante per risolvere la disfunzione sessuale maschile. Il farmaco è per voi. Mai dare ad altre persone, anche se i loro reclami siano uguali ai suoi.

Ottenere Classe, Metodo e Linea di Codice in un'applicazione Android

 







 

Questo breve articolo è per condividere un metodo per ottenere una stringa che contenga il nome della classe (eventualmente comprendente il Package), il metodo e la linea di codice in cui ci troviamo quando invochiamo il metodo.

Questa stringa, che poi può essere formattata come meglio si crede, è molto utile per esser utilizzata nei messaggi di Log, ma potrebbe andar bene per qualsiasi altro utilizzo!

 

Per creare questa stringa è conveniente utilizzare un metodo statico in una classe final che può essere importata poi nei nostri progetti e riutilizzata. Andiamo a definire ed analizzare questa classe.

 

Classe DebugInfo

La classe DebugInfo è stata dichiarata final in modo che non possa essere estesa e ha un costruttore che solleva semplicemente un AssertionError che restituisce una frase che indica che questa classe non è fatta per creare delle istanze, ma solo per contenere dei metodi statici di utilità.

Ma ecco il codice:

 

 

package com.example.android.apps.nomeApp.nomeSottoPackageUtility;
/**
 * This is a final class that we use to manage the constants of our application
 * 
 * @author Luca Bortolotti
 * @version 1.0 - Agosto 2014
 *
 */
public final class DebugInfo {
	private DebugInfo() {
		throw new AssertionError(
				"Never instantiate me! I'm only a Debug Info class!");
	}
	/**
	 * This static method return Class, Method and Line information
	 * 
	 * @param stack
	 *            as Throwable
	 * @return infoString as String formatted in this way:
	 *         "[Class].[Method].[line]: "
	 */
	public static String getClassMethodLine(Throwable stack) {
		StackTraceElement[] trace = stack.getStackTrace();
		// Get the class name with all the package
		String className = trace[0].getClassName();
		// Split and save only the class name
		className = className.substring(className.lastIndexOf('.') + 1);
		//return the infoString
		return className + "." + trace[0].getMethodName() + "."
				+ trace[0].getLineNumber() + ": ";
	}
	/**
	 * This static method return Class, Method and Line information
	 * 
	 * @param stack
	 *            as Throwable
	 * @return infoString as String formatted in this way: "[Class].[Method]: "
	 */
	public static String getClassMethod(Throwable stack) {
		StackTraceElement[] trace = stack.getStackTrace();
		// Get the class name with all the package
		String className = trace[0].getClassName();
		// Split and save only the class name
		className = className.substring(className.lastIndexOf('.') + 1);
		// return the infoString
		return className + "." + trace[0].getMethodName() + ": ";
	}
}

 

 

 

Come si nota, i metodi ottengono attraverso l'elemento Throwable stack un array StackTraceElement di nome trace da cui vengono estratte le informazioni volute:

  • Il nome della classe comprensivo di Package che io ho preferito troncare al SimpleName della classe per questioni di spazio nei Log, ma che potete conservare per esteso
  • Il nome del methodo che ha sollevato il Throwable
  • Il numero della linea di codice in cui questo Throwable è stato sollevato; nel secondo metodo questo valore non compare in quanto non sempre potrebbe essere necessario

 

 

Utilizzo dei metodi

 

Per utilizzare i seguenti metodi, vi farò l'esempio in un messaggio di Log, è sufficiente richiamarli passandogli come parametro un Throwable appena creato con new:

 

Log.i("TAG_LOG_MSG",DebugInfo.getClassMethodLine(new Throwable) + 
"qui possiamo scrivere il messaggio di Log localizzato dal metodo precedentemente 
invocato");

 

 

Con la riga di codice qui sopra otterremo in LogCat il seguente risultato (supponendo di aver inserito il messaggio di Log nella MainActivity e più precisamente nel metodo OnCreate() alla linea 20):

 

 

MainActivity.OnCreate.20:  qui possiamo scrivere il messaggio di Log localizzato dal metodo precedentemente invocato

 

 





Se ti è piaciuto questo articolo condividilo come preferisci, oppure lascia un commento!!

Parliamo di come si può essere sicuri che i rimedi si acquista on-line sono sicuri. Senza dubbio, uno dei luoghi emozionante, dove le persone possono acquistare farmaci è Internet. Ci sono farmaci variante per ogni malattie. Kamagra è un farmaco prescritto per il trattamento di diverse denunce. Cosa ne pensi "http://journal-info.net/buy/levitra-online.html "? Dove è possibile avere informazioni dettagliate su "buy levitra online "? Le questioni, come "buy levitra ", si riferiscono a vari tipi di problemi medici. Vivere con la disfunzione erettile può essere un vero problema. Ci sono farmaci variante per risolvere la disfunzione sessuale maschile. Il farmaco è per voi. Mai dare ad altre persone, anche se i loro reclami siano uguali ai suoi.