I denne Android-raske tipsen lærer du om to nye metoder for å varsle brukere til hendelser: Vibrasjon og LED / Trackball-belysning. Disse metodene refereres til som "Maskinvareindikatorer", og brukes sparsomt i ulike Android-apper for å formidle presserende informasjon eller bryte nyheter. Denne artikkelen knytter seg tett sammen med Android SDK: Bruke varsler, skåler og varsler.
Vibrasjoner styres av en dedikert systemnivå service: Vibrator Service. For å kunne bruke denne tjenesten må søknaden din imidlertid be om VIBRERE tillatelse som må først erklært i AndroidManifest.xml, som dette (linje 5):
Først av, opprett en forekomst av Vibrator ved å påkalle getSystemService ():
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE);
Nå kan du begynne å bruke objektets metoder. Det er tre totalt:
Vibrer for en bestemt varighet (i millisekunder).
Vibrer med det angitte mønsteret og eventuelt gjenta (forklart nedenfor).
Avbryt gjeldende vibrasjoner.
Angående vibrere (lang [] mønster, int gjenta): Du må passere et on-off mønster i form av a lang[] array. Første verdi indikerer hvor lenge du skal vente, hvor lenge skal du vibrere, og så videre. De gjenta parameteren kan enten være "-1" hvis du ikke vil at den skal gjenta eller indeksen for mønsterfeltet som skal gjenta. Hvis du vil at den skal gjenta, må du ikke glemme å avbryte den til slutt for å forhindre repetering på ubestemt tid.
Eksempelet nedenfor illustrerer bruken av begge vibrate () metoder:
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrer i et halvt sekund (500 milli sekunder) lang [] mønster = 400, 200; vibr.vibrate (mønster, 0); // 400ms pause, 200ms vibrasjon. Begynn å gjenta ved indeks 0.
Vanligvis er vibrasjoner forbundet med å motta en telefonsamtale eller et annet viktig systemvarsel som brukere forventer. Vibrasjoner krever oppmerksomhet fra brukere. Selv om brukerens telefon står i ventemodus eller har den lommet, er vibrasjoner en type varsel som har størst garanti for at brukerne vil legge merke til noe og vil sjekke telefonen for å finne ut hva som skjer. Du vil definitivt ikke ha travle personer som blir irritert av et tilfeldig varsel hvert par minutter, da sjansene er at de vil mest sannsynlig ende opp med å fjerne appen helt!
Når og hvordan skal du bruke vibrasjoner? Det enkle svaret: bare hvis det bidrar til en bedre brukeropplevelse. Selv da er det en god praksis å tilby en slags innstillingspanel som lar brukerne deaktivere den fra å bli brukt i søknaden din. Et eksempel på en hensiktsmessig bruk av denne tjenesten ville være en kalenderapp som varsler brukeren om en kommende hendelse.
Sammendrag Bruk kun vibrasjoner til hensiktsmessige formål. Ikke bruk dem for mye og hold dem relativt korte, med mindre programmet krever umiddelbar oppmerksomhet.
Start med en forekomst av NotificationManager, en annen kjernesystemtjeneste:
NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
Bygg deretter et nytt varslingsobjekt:
Varsling notif = ny Varsling (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;
ledARGB brukes til å angi en alfa, rød, grønn og blå fargeverdi kombinert i ett enkelt heltall. android.graphics.ColorHandy argb () -metoden er den enkleste måten å produsere den på. I eksemplet ovenfor spretter det rødt ut med full intensitet (255 for Rød og 255 for Alpha). Du kan selvsagt bare bruke en av fargeklassens konstanter som Color.RED.
flagg har FLAG_SHOW_LIGHTS flagget lagt til det via en bitvis operasjon. Det indikerer ganske enkelt at du vil bruke en enhetens LED i dette varslingsobjektet.
ledOnMS og ledOffMS: LED-lampen blinker med ledOnMS som angir hvor lenge lysdioden vil være på og ledOffMS angir hvor lenge det skal holde seg mellom blinkene. Koden nedenfor viser dette:
// Blinker LED av og på. (Tider i millisekunder) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Slår lysdioden på. Hvis du setter det slik, vil det resultere i en standard pause mellom blinker, som varer rundt 2 sekunder. notif.ledOnMS = 1; notif.ledOffMS = 0;
Til slutt, ring varsle (int id, Notification) og passere varselobjektet vi opprettet og konfigurert. For nå bør det være greit å gi den en tilfeldig verdi som en ID, men følg det så du kan avbryte varselet senere. Den bedre metoden er å lagre den i en konstant snarere enn hardkodende tallet som en parameter, men dette er en pedagogisk opplæring, så vi vil ganske enkelt koble den til demonstrasjonsformål.
notifMgr.notify (1234, notif);
Nå, hva resulterer dette i? Lysdioden vil bare begynne å blinke hvis skjermen er slått av, og den stopper når du slår den på igjen eller ring avbryt (). Slik ble Android-varslingssystemet utformet; Det er for øyeblikket ikke mulig å ta direkte kontroll over LED / trackball belysning. Vær også oppmerksom på at du må ringe notifMgr.cancel (1234) til slutt - 1234 er den IDen du angav tidligere. Du kan sette opp en timer for å ta vare på det, eller du kan påkalle det når aktiviteten din gjenopptar fokus.
Jeg skal rundt dette innlegget med noen få ord om kompatibilitet: hver enhetslinje er forskjellig på noen måte. Noen telefoner har en trackball med belysningsfunksjoner, andre har en LED, og noen har heller ikke. Android-systemet vil gjøre sitt beste i et forsøk på å gjøre det du har fortalt det til, men det kan ikke gi noen garantier.
Husk alltid: Bruk noen form for varsel sparsomt og klokt. Det er bedre å feile på den sikre siden og bestemme seg for å bruke vibrasjoner / lys enn å overan bruke dem, og dermed irriterende brukere som kan føre til dårlig sluttbrukeropplevelse. Til slutt, hvis du har fulgt med og vil teste opplærings kode, må du bruke en ekte Android-enhet, da emulatoren ikke støtter verken vibrasjoner eller lysdioder. For øyeblikket vil simulatoren dessverre ikke vise en vennlig "LED blinker for øyeblikket!" popup. Kanskje det vil i fremtiden ... Jeg håper det sikkert.