DevCorner: sostituiamoci a Google Now

Roberto Orgiu

Sappiamo tutti come si avvia Google Now, ma questa settimana ci chiederemo se è possibile sostituirci ad esso ed avviare la nostra applicazione al movimento verso l’alto caratteristico della ricerca di Big G.

La risposta, come in molti casi, è affermativa, ed è anche abbastanza semplice da realizzare: in realtà non ci chiederà che la creazione di un Drawable XML, la scelta di due icone e la modifica del nostro Manifest.

Iniziamo quindi a scegliere due icone, una per lo stato normale (quello che vediamo non appena iniziamo la pressione) ed una per lo stato di selezione, che verrà visualizzata quando andremo a raggiungere il punto di lancio dell’Activity, supponendo che si chiamino ic_normal ed ic_activated rispettivamente.

Creiamo quindi una cartella drawable e inseriamoci all’interno il nostro file launch_button.xml, che avrà il codice seguente:






Con questo codice creiamo quindi un’icona con base ic_normal, che viene modificata in ic_activated al bisogno, ma possiamo divertirci come preferiamo aggiungendo e modificando i parametri come specificato nelle linee guida per sviluppatori Android.

Ora che abbiamo creato la nostra icona, non ci resta che scegliere l’Activity che vogliamo lanciare (supponiamo si tratti di NowActivity) e modificare il Manifest, aggiungendo all’interno del tag relativo a questa finestra un nuovo intent-filter che ci permetterà di intercettare le chiamate di ASSIST (quelle cui risponde anche Google Now) ed avviare la nostra NowActivity.




Per modificare invece le icone ed utilizzare i livelli appena creati, dobbiamo includere nella stessa sezione (giusto sotto la chiusura del filtro appena inserito) un tag meta-data, che specificherà al sistema come usare le icone

Ora, il nostro software è funzionale, ma per renderlo perfetto dobbiamo rendere indipendente il suo task, in modo da scollegarlo dal resto dell’applicazione e far sì che alla pressione del tasto back del nostro dispositivo non vengano visualizzate altre parti della nostra app (magari precedentemente visitate); inoltre, è bene escludere questa Activity dalle applicazioni recenti e dalla history di Android, in modo da non lasciar traccia del suo avvio. Per completare quindi il quadro, non ci resta che aggiungere questi meta-dati nel tag dell’Activity:

Se volete provare subito l’esempio appena descritto, fate un salto su AndroidFileHost, mentre su GitHub troverete i sorgenti relativi a questo DevCorner e sul nostro forum tutto l’aiuto di cui possiate aver bisogno.