DevCorner: integriamo DashClock

Roberto Orgiu
Roberto Orgiu
DevCorner: integriamo DashClock

Poche ore fa, sul Play Store ha fatto capolino un major update di DashClock: perché non cogliere l'occasione e analizzare insieme come si creano le estensioni per quest'app?

La prima cosa da fare è scaricare il JAR delle API dal sito Google Code relativo all'applicazione di Roman Nurik, andandolo a copiare nella cartella libs del nostro progetto creato con Android Studio o IntelliJ (il procedimento per l'inclusione dei JAR in Eclipse è più immediato e può essere trovato qui). A questo punto, selezioniamo la voce File dalla finestra principale del nostro editor e selezioniamo la riga relativa a Project Structure: nel form che si aprirà, ci spostiamo sul tab Modules (la seconda voce della lista in alto sulla sinistra); a questo punto, un click sul + all'estrema destra e selezioniamo Jars or directories... Ora non ci resta che scegliere il file .jar dal folder in cui lo avevamo inserito e, una volta aggiunto, nella colonna Scope relativa alla voce appena creata, scegliamo il valore Compile.

Quest'ultimo passo è importantissimo per evitare che, una volta deployato sul nostro terminale, il software crashi lanciando una ClassNotFoundException. Facciamo quindi un click su Apply e poi su OK.

Ora che abbiamo aggiunto la libreria, creiamo una nuova classe che estenda DashClockExtension e indichiamo subito che vogliamo che la nostra estensione si aggiorni all'accensione dello schermo

public class ExtensionTest extends DashClockExtension{
protected void onInitialize(boolean isReconnect){
setUpdateWhenScreenOn(true);
}

A questo punto, possiamo iniziare a definire il comportamento della nostra estensione scegliendo, per prima cosa, l'Intent da lanciare (in maniera del tutto analoga rispetto a ciò che abbiamo fatto in un precedente tutorial) e saltando quindi a piè pari tutta la conoscenza pregressa per analizzare in dettaglio le peculiarità del codice relativo a DashClock: la parte centrale della routine onUpdateData (che è quella che DashClock va a richiamare quando si aggiorna la nostra estensione) è l'oggetto di tipo ExtensionData in cui impostiamo, nell'ordine, i seguenti attributi:

  • la visibilità dell'estensione; 
  • l'icona che verrà utilizzata da DashClock per rappresentare la nostra estensione;
  • lo status che verrà stampato quando DashClock non è massimizzato;
  • il titolo esteso (apparirà quando il widget è massimizzato);
  • il sottotitolo esteso;
  • l'Intent che verrà lanciato al tap sulla notifica (quello che abbiamo creato all'inizio).

Specifichiamo a questo punto a DashClock di utilizzare l'oggetto di tipo ExtensionData tramite una chiamata a publishUpdate.

protected void onUpdateData(int i){
Intent extensionClickIntent;
ExtensionData extensionData = new ExtensionData();
extensionData.visible(true); 
extensionData.icon(R.drawable.ic_extension_test); 
extensionData.status("AW.it"); 
extensionData.expandedTitle(title); 
extensionData.expandedBody(message); 
extensionData.clickIntent(extensionClickIntent); 
publishUpdate(extensionData);
}

Il nostro Java è finito e ci manca solamente qualche modifica al nostro AndroidManifest, in cui segnaleremo l'estensione e l'utilizzo dei permessi relativi a DashClock con una sintassi che rimarrà praticamente invariata per tutte le estensioni che scriveremo. Abbiamo incluso l'intero file XML sul reporitory BitBucket per via della sua lunghezza.

Ora non ci resta che compilare e ammirare la nostra opera, che apparirà più o meno come nella galleria qui sotto. Se volete iniziare subito a programmare, fate un salto sul solito thread del nostro forum, dove sono presenti tutti i link relativi ai sorgenti e all'APK di questo DevCorner.

Fonte: