Hardware-indicatoren gebruiken met de Android SDK

In deze snelle Android-tip leert u over twee nieuwe methoden om gebruikers te waarschuwen voor evenementen: trillingen en LED / Trackball-verlichting. Deze methoden worden "hardware-indicatoren" genoemd en worden spaarzaam gebruikt in verschillende Android-apps om dringende informatie of nieuws over te brengen. Dit artikel sluit nauw aan bij Android SDK: gebruik van waarschuwingen, toast en meldingen.

Het apparaat trillen

Trillingen worden bestuurd door een speciale service op systeemniveau: de vibratorservice. Als u deze service wilt gebruiken, moet uw toepassing echter het volgende aanvragen TRILLEN toestemming die eerst moet worden gedeclareerd AndroidManifest.xml, zoals zo (regel 5):

            

Maak eerst een instantie van Vibrator door getSystemService () aan te roepen:

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

Nu kunt u de methoden van het object gaan gebruiken. Er zijn er in totaal drie:

  • trillen (lange tijd)

    Trillen voor een opgegeven duur (in milliseconden).

  • trillen (lang [] patroon, int herhalen)

    Trillen met het opgegeven patroon en optioneel herhalen (hieronder uitgelegd).

  • annuleren()

    Annuleer huidige vibraties.

met betrekking tot trillen (lang [] patroon, int herhalen): Je moet een aan-uit patroon doorgeven in de vorm van een lang[] matrix. Eerste waarde geeft aan hoelang moet worden gewacht, vervolgens hoe lang moet worden getrild, enzovoort. De herhaling parameter kan "-1" zijn als u niet wilt dat deze wordt herhaald of de index van de patroonarray waarop moet worden herhaald. Als je wilt dat het herhaalt, vergeet dan niet om het uiteindelijk te annuleren om te voorkomen dat je het oneindig herhaalt.

Het onderstaande voorbeeld illustreert het gebruik van beide methoden voor trillen ():

 Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Trillen gedurende een halve seconde (500 milliseconden) lang [] patroon = 400, 200; vibr.vibrate (patroon, 0); // 400 ms pauze, 200 ms vibratie. Begin met herhalen bij index 0.

Meestal worden trillingen geassocieerd met het ontvangen van een telefoontje of een andere belangrijke systeemmelding die gebruikers verwachten. Vibraties vragen de aandacht van gebruikers. Zelfs als de telefoon van de gebruiker in stand-by staat of als deze is opgeborgen, zijn trillingen een type melding die de grootste garantie bieden dat gebruikers iets merken en hun telefoon willen controleren om erachter te komen wat er gebeurt. Je wilt absoluut niet dat drukke mensen geïrriteerd raken door een willekeurige waarschuwing om de paar minuten, omdat de kans groot is dat ze de app waarschijnlijk helemaal zullen verwijderen!

Wanneer en hoe moet je gebruik maken van trillingen? Het simpele antwoord: alleen als het bijdraagt ​​aan een betere gebruikerservaring. Zelfs dan is het een goede gewoonte om een ​​soort instellingenpaneel aan te bieden waarmee gebruikers het kunnen uitschakelen in uw toepassing. Een voorbeeld van een correct gebruik van deze service is een kalenderapp die de gebruiker op de hoogte stelt van een aanstaande gebeurtenis.

Samengevat, gebruik alleen trillingen voor de juiste doeleinden. Overgebruik ze niet en houd ze redelijk kort, tenzij de toepassing onmiddellijke aandacht vereist.

Een hardware-led / trackball aansteken met Android-meldingen

Begin met een exemplaar van NotificationManager, een andere kernsysteemservice:

 NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);

Maak vervolgens een nieuw object Notification:

 Notification notif = new Notification (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;

ledARGB wordt gebruikt om een ​​alpha, rode, groene en blauwe kleurwaarde te specificeren die gecombineerd is tot één geheel getal. android.graphics.ColorDe handige methode argb () is de eenvoudigste manier om het te produceren. In het bovenstaande voorbeeld spuugt het rood uit met volledige intensiteit (255 voor rood en 255 voor alfa). U kunt natuurlijk eenvoudig een van de constanten van de kleurklasse gebruiken, zoals Color.RED.

vlaggen heeft de vlag FLAG_SHOW_LIGHTS eraan toegevoegd via een bitsgewijze bewerking. Dit geeft eenvoudigweg aan dat u in dit meldingsobject gebruik wilt maken van de LED van een apparaat.

ledOnMS en ledOffMS: De LED zal knipperen met led ONMS om aan te geven hoe lang de LED aan zal blijven en de led zal aangeven hoe lang hij moet blijven knipperen. De onderstaande code demonstreert dit:

 // Knippert LED aan en uit. (Tijden in milliseconden) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Schakelt de LED in. Als u dit op deze manier instelt, resulteert dit in een standaardpauze tussen flitsen, die ongeveer 2 seconden duurt. notif.ledOnMS = 1; notif.ledOffMS = 0;

Bel tenslotte de melding (int id, Notification) en geef het Notification-object door dat we hebben gemaakt en geconfigureerd. Voor nu zou het goed zijn om hem een ​​willekeurige waarde als ID te geven, maar houd hem in de gaten zodat je de melding later kunt annuleren. De betere methode is om het op te slaan in een constante in plaats van het coderen van het nummer als een parameter, maar dit is een educatieve tutorial, dus we zullen het eenvoudig coderen voor demonstratiedoeleinden.

 notifMgr.notify (1234, notif);

Welnu, wat levert dit op? De LED begint alleen te knipperen als uw scherm is uitgeschakeld en het zal stoppen wanneer u het weer inschakelt of Cancel () aanroept. Dit is hoe het Android-notificatiesysteem is ontworpen; er is momenteel geen manier om directe controle te nemen over LED / trackball-verlichting. Houd er ook rekening mee dat je moet bellen notifMgr.cancel (1234) uiteindelijk - 1234 is de ID die u eerder hebt opgegeven. Je zou een timer kunnen instellen om daar voor te zorgen of je zou het kunnen aanroepen wanneer je activiteit weer focus krijgt.

Ik ga dit bericht bespreken met een paar woorden over compatibiliteit: elke apparaatregel verschilt op een of andere manier. Sommige telefoons hebben een trackball met verlichtingsmogelijkheden, andere hebben een LED-lampje en andere hebben geen van beide. Het Android-systeem zal zijn best doen in een poging om te doen wat je hebt verteld, maar het kan geen garanties geven.

Conclusie

Onthoud altijd: gebruik elk type melding spaarzaam en verstandig. Het is beter om aan de veilige kant te denken en te beslissen om geen trillingen / lampen te gebruiken dan om ze te veel te gebruiken, waardoor gebruikers worden geïrriteerd die kunnen leiden tot een slechte eindgebruikerservaring. Ten slotte, als je de code van de tutorial hebt gevolgd en deze wilt testen, moet je een echt Android-apparaat gebruiken, omdat de emulator noch vibraties, noch LED's ondersteunt. Voorlopig zal de simulator helaas geen vriendelijk "LED knippert op dit moment!" pop-up. Misschien zal het in de toekomst ... ik hoop het zeker.