Använda hårddiskindikatorer med Android SDK

I den här snabba Android-spetsen lär du dig om två nya metoder för att varna användarna till händelser: Vibration och LED / Trackball-belysning. Dessa metoder kallas "Hårdvaraindikatorer" och används sparsamt i olika Android-appar för att förmedla brådskande information eller bryta nyheter. Denna artikel knyts ihop med Android SDK: Använda varningar, skålar och meddelanden.

Vibrerar enheten

Vibrationer styrs av en dedikerad systemnivå service: Vibrator Service. För att kunna använda denna tjänst måste din ansökan begära VIBRERA tillstånd som måste förklaras först i AndroidManifest.xml, som så (linje 5):

            

Först av, skapa en instans av Vibrator genom att påkalla getSystemService ():

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

Nu kan du börja använda objektets metoder. Det finns tre totalt:

  • vibrera (lång tid)

    Vibrera under en viss tid (i millisekunder).

  • vibrera (långt [] mönster, int repeat)

    Vibrera med det angivna mönstret och eventuellt upprepa (förklaras nedan).

  • annullera()

    Avbryt nuvarande vibrationer.

Angående vibrera (långt [] mönster, int repeat): Du måste skicka ett on-off-mönster i form av a lång[] array. Första värdet anger hur länge du ska vänta, hur länge du ska vibrera och så vidare. De upprepa Parametern kan antingen vara "-1" om du inte vill att den ska repeteras eller indexet för mönsteruppsättningen som ska upprepas. Om du vill att det ska upprepas, glöm inte att avbryta det så småningom för att förhindra att du upprepas i obestämd tid.

Exemplet nedan illustrerar användningen av både vibrate () metoder:

 Vibrator vibration = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrera i en halv sekund (500 milli sekunder) lång [] mönster = 400, 200; vibr.vibrate (mönster, 0); // 400ms paus, 200ms vibration. Börja upprepa vid index 0.

Vanligtvis är vibrationer associerade med att ta emot ett telefonsamtal eller någon annan viktig systemanmälan som användare förväntar sig. Vibrationer kräver uppmärksamhet från användarna. Även om användarens telefon är i vänteläge eller har den låsad, är vibrationer en typ av anmälan som ger största möjliga garanti för att användarna kommer att notera något och kommer att vilja kontrollera deras telefon för att ta reda på vad som händer. Du vill absolut inte att upptagna personer blir irriterad av en slumpvis varning varje några minuter, eftersom chansen är att de sannolikt kommer att sluta ta bort appen helt och hållet!

När och hur ska du använda vibrationer? Det enkla svaret: endast om det bidrar till en bättre användarupplevelse. Även då är det en bra praxis att erbjuda någon form av inställningspanel som gör att användarna kan inaktivera den från att användas i din ansökan. Ett exempel på en lämplig användning av denna tjänst skulle vara en kalenderapp som meddelar användaren av en kommande händelse.

Sammanfattningsvis använd endast vibrationer för lämpliga ändamål. Överanvänd dem inte och håll dem ganska korta om inte ansökan kräver omedelbar uppmärksamhet.

Lyser upp en hårdvara-LED / Trackball med Android-meddelanden

Börja med en instans av NotificationManager, en annan kärnsystemtjänst:

 NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);

Skapa sedan ett nytt meddelandeobjekt:

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

ledARGB används för att ange ett alfa, rött, grönt och blått färgvärde kombinerat till ett enda heltal. android.graphics.ColorHandfulla argb () -metoden är det enklaste sättet att producera det. I exemplet ovan spetsar det rött med full intensitet (255 för Röd och 255 för Alpha). Du kan självklart helt enkelt använda en av färgklassens konstanter som Color.RED.

flaggor har flaggan FLAG_SHOW_LIGHTS lagt till den via en bitvis operation. Det indikerar helt enkelt att du vill använda en enhetens LED i det här meddelandobjektet.

ledOnMS och ledOffMS: Lysdioden blinkar med ledOnMS som anger hur länge lysdioden lyser och ledOffMS indikerar hur länge den ska stanna mellan blinkar. Koden nedan visar detta:

 // Blinkar lysdioden på och av. (Tider i millisekunder) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Slår på lysdioden. Om du ställer in det så kommer det att resultera i en standard paus mellan blixtar, som varar cirka 2 sekunder. notif.ledOnMS = 1; notif.ledOffMS = 0;

Slutligen, ring meddela (int id, Notification) och skicka meddelandet objektet vi skapade och konfigurerat. För tillfället borde det vara okej att ge det ett slumpmässigt värde som ett ID, men hålla reda på det så att du kan avbryta anmälan senare. Den bättre metoden är att lagra den i en konstant snarare än att koda numret som en parameter, men det här är en pedagogisk handledning, så vi kommer helt enkelt att koda det för demonstrationsändamål.

 notifMgr.notify (1234, notif);

Nu, vad resulterar detta i? Lysdioden börjar bara blinka om skärmen är avstängd och den kommer sluta när du slår på den igen eller ringa avbryta (). Så här har Android-anmälningssystemet utformats. Det finns för närvarande inget sätt att ta direkt kontroll över LED- / trackballbelysning. Också, kom ihåg att du måste ringa notifMgr.cancel (1234) så småningom - 1234 är det ID du angav tidigare. Du kan konfigurera en timer för att ta hand om det eller du kan åberopa det när din aktivitet återvänder fokus.

Jag kommer att runda den här inlägget med några ord om kompatibilitet: alla enheter varierar på något sätt. Vissa telefoner har en trackball med belysningsförmåga, andra har en LED, och vissa har inte heller. Android-systemet kommer att göra sitt bästa för att försöka göra vad du har sagt det till, men det kan inte ge några garantier.

Slutsats

Kom alltid ihåg: Använd någon form av varning sparsamt och klokt. Det är bättre att radera på den säkra sidan och bestämma sig mot att använda vibrationer / ljus än att överanvända dem, vilket därmed irriterande användare som kan leda till en dålig slutanvändarupplevelse. Slutligen, om du har följt med och vill testa handledningens kod, måste du använda en riktig Android-enhet, eftersom emulatorn inte stöder vibrationer eller lysdioder. För tillfället kommer simulatorn tyvärr inte att visa en vänlig "LED blinkar för tillfället!" dyka upp. Kanske kommer det framöver ... Jag hoppas verkligen det.