Utilizarea indicatorilor hardware cu SDK-ul Android

În acest sfat rapid pentru Android veți afla despre două metode noi de alertare a utilizatorilor la evenimente: vibrații și iluminare LED / Trackball. Aceste metode sunt denumite "Indicatori hardware" și sunt folosiți cu ușurință în diferite aplicații Android pentru a transmite informații urgente sau știri de ultimă oră. Acest articol se leagă strâns cu Android SDK: folosirea alertelor, a toasturilor și a notificărilor.

Vibrarea dispozitivului

Vibrațiile sunt controlate de un serviciu dedicat la nivel de sistem: serviciul de vibrații. Cu toate acestea, pentru a utiliza acest serviciu, cererea dvs. trebuie să solicite VIBRA permisiunea care trebuie declarată prima dată în AndroidManifest.xml, (linia 5):

            

Mai întâi, creați o instanță a Vibrator invocând getSystemService ():

 Vibrator vibr = (vibrator) getSystemService (Context.VIBRATOR_SERVICE);

Acum puteți începe să utilizați metodele obiectului. Există trei în total:

  • vibrați (timp îndelungat)

    Vibrați pentru o durată specificată (în milisecunde).

  • vibrați (model lung [], repetare int)

    Vibrați utilizând modelul specificat și, opțional, repetați (explicat mai jos).

  • Anulare()

    Anulați vibrațiile curente.

In ceea ce priveste vibrați (model lung [], repetare int): Trebuie să treci un model on-off sub formă de a lung[] matrice. Prima valoare indică durata de așteptare, durata vibrației și așa mai departe. repeta parametrul poate fi "-1" dacă nu doriți să se repete sau indexul matricei de modele la care să se repete. Dacă doriți să repetați, nu uitați să o anulați în cele din urmă pentru a împiedica repetarea pe termen nelimitat.

Exemplul de mai jos ilustrează utilizarea ambelor metode de vibrare ():

 Vibrator vibr = (vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrați pentru o jumătate de secundă (500 mil. Secunde) lung [] model = 400, 200; vibromvibrate (model, 0); // pauză de 400 ms, vibrație de 200 ms. Începeți repetarea la indexul 0.

În mod obișnuit, vibrațiile sunt asociate cu primirea unui apel telefonic sau a unei alte notificări importante despre sistem pe care utilizatorii o așteaptă. Vibrațiile necesită atenție din partea utilizatorilor. Chiar dacă telefonul utilizatorului este în stare de așteptare sau dacă acesta este introdus în buzunar, vibrațiile sunt un tip de notificare care are cea mai mare garanție că utilizatorii vor lua notă de ceva și vor dori să verifice telefonul pentru a afla ce se întâmplă. Cu siguranta nu vrei ca oamenii ocupati sa fie deranjati de o alerta aleatorie la fiecare cateva minute, fiind sanse ca acestea vor sfarsi, cel mai probabil, sa indeparteze aplicatia in intregime!

Când și cum ar trebui să folosiți vibrațiile? Răspunsul simplu: numai dacă contribuie la o experiență mai bună a utilizatorului. Chiar și atunci, este o practică bună să oferiți un fel de panou de setări care permite utilizatorilor să îl dezactiveze de la a fi utilizat în aplicația dvs. Un exemplu de utilizare adecvată a acestui serviciu ar fi o aplicație de calendar care notifică utilizatorul unui eveniment viitoare.

Pe scurt, folosiți numai vibrații pentru scopuri adecvate. Nu le excesați și le păstrați destul de scurte, cu excepția cazului în care cererea necesită o atenție imediată.

Afișarea unui LED Hardware / Trackball cu notificări Android

Începeți cu o instanță de NotificationManager, un alt serviciu de bază:

 NotificareManager NotifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);

Apoi, construiți un nou obiect Notificare:

 Notificare notif = Notificare nouă (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notificare.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;

ledARGB este utilizat pentru a specifica o valoare de culoare alfa, roșu, verde și albastru combinată într-un singur întreg. android.graphics.Colormetoda lui argb () este cea mai ușoară cale de ao produce. În exemplul de mai sus, se scurge roșu cu intensitate completă (255 pentru Roșu și 255 pentru Alfa). Puteți folosi, bineînțeles, pur și simplu una dintre constantele clasei Color, cum ar fi Color.RED.

steaguri are flagul FLAG_SHOW_LIGHTS adăugat la acesta printr-o operație bitwise. Pur și simplu indică faptul că doriți să utilizați LED-ul dispozitivului în acest obiect de notificare.

ledOnMS și ledOffMS: LED-ul va clipi cu ledOnMS indicând cât timp LED-ul va fi activat și ledOffMS indicând cât timp trebuie să rămână oprit între intermitente. Codul de mai jos demonstrează acest lucru:

 // Se aprinde și se stinge LED-ul. (Times în milisecunde) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Pornește LED-ul. Această setare va duce la o pauză prestabilită între intermitente, care durează aproximativ 2 secunde. notif.ledOnMS = 1; notif.ledOffMS = 0;

În cele din urmă, apelați notificarea (int id, Notificare) și treceți obiectul Notificare pe care l-am creat și configurat. Pentru moment, ar trebui să fie bine să îi dați o valoare aleatorie ca un ID, dar urmăriți-o astfel încât să puteți anula notificarea mai târziu. Metoda mai bună este aceea de ao stoca într-o constanță, mai degrabă decât de a codifica greu numărul ca parametru, dar acesta este un tutorial educațional, așa că vom codifica pur și simplu codul pentru demonstrații.

 notifMgr.notify (1234, notif);

Acum, ce rezultă acest rezultat? LED-ul va începe să clipească doar dacă ecranul este oprit și se va opri când îl reporniți sau anulați apelul (). Acesta a fost modul în care a fost proiectat sistemul de notificare Android; în prezent nu există nici o modalitate de control direct al iluminării LED / trackball. De asemenea, nu uitați că trebuie să sunați notifMgr.cancel (1234) în cele din urmă - 1234 fiind ID-ul pe care l-ați specificat anterior. Puteți configura un cronometru pentru a avea grijă de acest lucru sau puteți să îl invocați atunci când activitatea dvs. își recapătă atenția.

Am de gând să rotunji acest post cu câteva cuvinte pe compatibilitate: fiecare linie de dispozitiv diferă într-un fel. Unele telefoane au un trackball cu capabilități de iluminare, altele au un LED, iar altele nu au nici unul. Sistemul Android va face tot ce este mai bun în încercarea de a face ceea ce i-ați spus, dar nu poate face nici o garanție.

Concluzie

Amintiți-vă întotdeauna: Utilizați orice tip de avertizare cu ușurință și cu înțelepciune. Este mai bine să se greșească din partea sigură și să se decidă împotriva folosirii vibrațiilor / luminilor, decât să le exceseze, ceea ce le enerva pe utilizatori, ceea ce ar putea duce la o experiență slabă a utilizatorilor finali. În cele din urmă, dacă v-ați urmărit și doriți să testați codul tutorialului, va trebui să utilizați un dispozitiv Android real, deoarece emulatorul nu acceptă nici vibrații, nici LED-uri. Deocamdată, simulatorul, din nefericire, nu va arăta un LED prietenos "clipește în prezent!" Pop-up. Poate că va fi în viitor ... sper cu siguranță.

Cod