In questo suggerimento rapido di Android verranno illustrati due nuovi metodi per avvisare gli utenti degli eventi: Vibrazione e illuminazione a LED / Trackball. Questi metodi sono indicati come "Indicatori hardware" e vengono utilizzati con parsimonia in varie app Android per trasmettere informazioni urgenti o ultime notizie. Questo articolo è strettamente correlato all'SDK di Android: utilizzo di avvisi, toast e notifiche.
Le vibrazioni sono controllate da un servizio a livello di sistema dedicato: il servizio Vibrator. Tuttavia, per poter utilizzare questo servizio, la tua domanda deve richiedere il VIBRARE permesso che deve essere dichiarato per primo in AndroidManifest.xml, così (riga 5):
Prima di tutto, crea un'istanza di Vibrator richiamando getSystemService ():
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE);
Ora puoi iniziare a usare i metodi dell'oggetto. Ce ne sono tre in totale:
Vibrazione per una durata specificata (in millisecondi).
Vibrazione utilizzando il modello specificato e opzionalmente ripetere (spiegato di seguito).
Annulla le vibrazioni correnti.
per quanto riguarda vibra (lungo [], ripetizione int): Devi passare uno schema on-off in forma di a lungo[] array. Il primo valore indica il tempo di attesa, il tempo di vibrazione e così via. Il ripetere il parametro può essere "-1" se non si desidera che si ripeta o l'indice dell'array di pattern a cui ripetere. Se vuoi che si ripeta, non dimenticarti di cancellarlo alla fine per impedire che si ripeta all'infinito.
L'esempio seguente illustra l'uso di entrambi i metodi vibrate ():
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrazione per mezzo secondo (500 milli secondi) lungo [] modello = 400, 200; vibr.vibrate (pattern, 0); // pausa di 400 ms, vibrazione di 200 ms. Inizia a ripetere all'indice 0.
In genere, le vibrazioni sono associate alla ricezione di una telefonata o ad altre importanti notifiche di sistema che gli utenti si aspettano. Le vibrazioni richiedono attenzione da parte degli utenti. Anche se il telefono dell'utente è in standby o lo hanno messo in tasca, le vibrazioni sono un tipo di notifica che ha la massima garanzia che gli utenti prenderanno nota di qualcosa e vorranno controllare il telefono per scoprire cosa sta succedendo. Sicuramente non vuoi che le persone indaffarate vengano infastidite da un avviso casuale ogni pochi minuti, poiché è molto probabile che finiranno per rimuovere completamente l'app!
Quando e come dovresti fare uso delle vibrazioni? La risposta semplice: solo se contribuisce a una migliore esperienza utente. Anche in questo caso, è buona norma offrire una sorta di pannello delle impostazioni che consenta agli utenti di disabilitarne l'utilizzo nell'applicazione. Un esempio di un uso appropriato di questo servizio sarebbe un'app di calendario che notifica all'utente di un evento imminente.
In sintesi, utilizzare solo le vibrazioni per scopi appropriati. Non esagerare e mantenerli piuttosto corti a meno che l'applicazione richieda immediata attenzione.
Inizia con un'istanza di NotificationManager, un altro servizio di sistema principale:
NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
Quindi, costruisci un nuovo oggetto di notifica:
Notifica notif = nuova Notifica (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;
ledARGB è usato per specificare un valore di colore alfa, rosso, verde e blu combinato in un singolo intero. android.graphics.ColorIl pratico metodo argb () è il modo più semplice per produrlo. Nell'esempio sopra, sputa il rosso con piena intensità (255 per Rosso e 255 per Alfa). È possibile, ovviamente, utilizzare semplicemente una delle costanti della classe Color come Color.RED.
bandiere ha il flag FLAG_SHOW_LIGHTS aggiunto ad esso tramite un'operazione bit a bit. Indica semplicemente che si desidera utilizzare il LED di un dispositivo in questo oggetto di notifica.
ledOnMS e ledOffMS: Il LED lampeggerà con ledOnMS che indica per quanto tempo il LED sarà acceso e ledOffMS indicherà per quanto tempo dovrebbe rimanere spento tra i flash. Il seguente codice dimostra questo:
// accende e spegne il LED. (Tempi in millisecondi) notif.ledOnMS = 1000; notif.ledOffMS = 300; // accende il LED. Impostandolo in questo modo si otterrà una pausa predefinita tra i flash, che dura circa 2 secondi. notif.ledOnMS = 1; notif.ledOffMS = 0;
Infine, chiama notify (int id, Notifica) e passa l'oggetto Notification che abbiamo creato e configurato. Per ora, dovrebbe essere ok per dargli un valore casuale come ID, ma tenetene traccia, in modo da poter cancellare la notifica più tardi. Il metodo migliore è archiviarlo in una costante piuttosto che codificare a fondo il numero come parametro, ma questo è un tutorial educativo, quindi lo codificheremo semplicemente a scopi dimostrativi.
notifMgr.notify (1234, notif);
Ora, in cosa consiste questo? Il LED inizierà a lampeggiare solo se lo schermo è spento e si fermerà quando lo riaccenderai o chiamerai cancel (). Ecco come è stato progettato il sistema di notifica Android; non esiste attualmente alcun modo per controllare direttamente l'illuminazione a LED / trackball. Inoltre, tieni presente che devi chiamare notifMgr.cancel (1234) alla fine - 1234 è l'ID che hai specificato in precedenza. Puoi impostare un timer per prenderti cura di questo o puoi invocarlo quando la tua attività riprende l'attenzione.
Intorno a questo post con alcune parole sulla compatibilità: ogni linea di dispositivo differisce in qualche modo. Alcuni telefoni hanno una trackball con capacità di illuminazione, altri hanno un LED, e alcuni non ne hanno. Il sistema Android farà del suo meglio nel tentativo di fare ciò che gli hai detto, ma non può fornire alcuna garanzia.
Ricorda sempre: usa qualsiasi tipo di avviso con parsimonia e saggia. È meglio sbagliare dalla parte della sicurezza e decidere di non utilizzare le vibrazioni / luci piuttosto che usarle eccessivamente, infastidendo così gli utenti che potrebbero causare un'esperienza utente scadente. Infine, se hai seguito e vuoi testare il codice del tutorial, dovrai utilizzare un vero dispositivo Android, poiché l'emulatore non supporta né vibrazioni né LED. Per ora, il simulatore purtroppo non mostrerà un "LED" attualmente lampeggiante! apparire. Forse lo farà in futuro ... Lo spero di sicuro.