Snabbtips Skapa en anpassad snabbinställningsplatta för Android

Den snabba inställningspanelen behöver ingen introduktion till Android-användare. De använder de växlar som det hela tiden erbjuder för att slå på och av tjänster som WiFi, Bluetooth och GPS. Under årens lopp har det växt och förbättrats så mycket att det sällan finns ett behov av att öppna själva inställningar app dessa dagar.

Fram till nyligen låses snabbinställningspanelen och användarna var nöjda med en stor, men fast samling av omkopplare, allmänt kända som plattor. Med lanseringen av Android Nougat är det dock inte längre fallet. Användare kan nu lägga till, ta bort och omorganisera kakel. Dessutom, som en apputvecklare, kan du erbjuda egna anpassade plattor.

I det här snabba tipset visar jag dig hur du använder Quick Settings Tile API för att skapa en anpassad tegel från början.

förutsättningar

Innan du fortsätter, se till att du har följande:

  • den senaste versionen av Android Studio
  • en telefon som kör Android Nougat eller högre 

1. Förstå plattor

I huvudsak är kakel bara lättåtkomliga strömbrytare som användare kan trycka när som helst - även när deras enheter är låsta. Eftersom de inte kan visa något annat än en ikon och en etikett, kan de bara användas för mycket specifika men enkla åtgärder.

Varje kakel har ett tillstånd i samband med det. Precis som en verklig omkopplare, kan den antingen vara i ett "on" -stat eller ett "off" -läge. Som du kan förvänta dig är en kakel som är klarare än den som är avstängd. Även om du måste hantera tillståndet för din kakel själv, hanterar Android-plattformen automatiskt sin ljusstyrka.

2. Skapa en anpassad kakel

För att kunna erbjuda en anpassad kakel måste din app ha en tjänst som utökar TileService klass.

klass MyTileService: TileService () 

Medan du nämner tjänsten i projektets manifest måste du ge den en etikett och en ikon, som båda kommer att användas för att skapa kakelens standardutseende. För att ge dig ett realistiskt exempel ska vi nu skapa en kakel som gör att användarens enhet vibrerar kontinuerligt så länge det är på. Dess etikett kommer att vara Darra, och dess ikon kommer att vara vibration, som finns i Vector Asset Studio under Underrättelse sektion.

Därefter måste du lägga till ett avsikt filter till tjänsten definition så att det kan svara på android.service.quicksettings.action.QS_TILE verkan. För att försäkra dig om att den bara kan startas av Android-systemet måste du också skydda den med android.permission.BIND_QUICK_SETTINGS_TILE lov.

Vid denna tidpunkt bör tjänstens definition se ut så här:

    

Det är all kod du behöver för att visa en anpassad kakel. Om du distribuerar din app nu och navigerar till Redigera delen av snabbinställningspanelen ska du kunna se din kakel i listan över tillgängliga plattor.


Dra det och släpp det nära en av standardplattorna så att du lättare kan komma åt det.

3. Initialisering av plattan

Du måste ha märkt att vår kakel är ganska ljus. Det beror på att vi fortfarande inte har initierat sitt tillstånd, och systemet anser att det är "på". För att ändra kakel så att den startar i avstängning när användaren lägger till det kan du åsidosätta onTileAdded () händelsehanterare av tjänsten och ställa in stat egenskapen hos qsTile protestera mot Tile.STATE_INACTIVE.

När du ändrar staten måste du komma ihåg att även ringa updateTile () metod så att kakelens utseende ändras för att matcha tillståndet.

åsidosätta roligt onTileAdded () super.onTileAdded () // Uppdatera tillstånd qsTile.state = Tile.STATE_INACTIVE // Uppdatering ser qsTile.updateTile ()

Om du kör appen nu tar du bort kakel och lägger till den igen, så ska du se att den är avstängd.

4. Lägga till en Click Handler

Just nu händer inget när du klickar på kakel. Du kan ändra det genom att överstyra onClick () evenemangshanterare av tjänsten.

Inne i händelsehanteraren kan du slå på och av kakel genom att växla mellan Tile.STATE_ACTIVE och Tile.STATE_INACTIVE stater. Följande kod visar hur du gör det med en enkel om annat påstående:

åsidosätta roligt onClick () super.onClick () om (qsTile.state == Tile.STATE_INACTIVE) // Slå på qsTile.state = Tile.STATE_ACTIVE startVibrating () // TODO annat // Slå av qsTile.state = Tile.STATE_INACTIVE stopVibrating () // TODO // Uppdatering ser qsTile.updateTile ()

5. Använda vibratorn

Åtgärden i samband med plattan bör starta så snart kakelskivan är påslagen och stoppa så snart den är avstängd. Därför, förutom att uppdatera staten, innehåller koden vi lade till i föregående steg samtal till startVibrating () och stopVibrating () metoder.

De startVibrating () Metoden kan använda vibrera() Metoden för Android Vibrator klass för att få telefonen att vibrera. De vibrera() Metoden förväntar sig dock en bestämd varaktighet. För att se till att telefonen vibrerar kontinuerligt så länge som kakan är på, kan du ringa den inuti en slinga, helst med kort varaktighet. En sådan slinga kan inte köras inuti UI-tråden, den tråd som kakelanordningen använder för sin händelsehanterare.

Idealiskt är att någon långsiktig operation som du vill att din kakel service ska starta eller stoppa placeras inuti en IntentService exempel. För att hålla denna handledning kort, men låt oss göra med en coroutine för nu.

Följande kod visar hur du kör slingan i en koroutin skapad med hjälp av lansera() coroutine byggare:

roligt startVibrerande () start while (qsTile.state == Tile.STATE_ACTIVE) (getSystemService (Context.VIBRATOR_SERVICE) som Vibrator) .Vibrate (1000) // Vibrera en sekund // Vänta en sekund innan vibrerar igen fördröjning (1000)

Även om ovanstående slinga kommer att avslutas när användaren slår av kakelnivån, kan vibrationerna hålla en extra sekund. För att stoppa dem omedelbart kan du ringa annullera() metod för Vibrator service inuti stopVibrating () metod.

rolig stopVibrating () (getSystemService (Context.VIBRATOR_SERVICE) som Vibrator) .cancel ()

Vår anpassade kakel är klar. Det fungerar dock inte om det inte är tillåtet att använda telefonens vibrator. Du kan begära det genom att lägga till följande rad i ditt projekts manifestfil:

Om du distribuerar appen nu och klickar på den anpassade kakeln ska telefonen börja vibrera. Genom att klicka på den igen ska du kunna stoppa vibrationerna omedelbart.

Slutsats

Om du bygger en app som erbjuder unik funktionalitet eller information, behöver användaren tillgång till mycket ofta, och erbjuder en anpassad kakel med den kan dramatiskt förbättra användarupplevelsen. I den här handledningen såg du hur lätt det är att skapa en sådan kakel med hjälp av Quick Settings Tile API.

För att lära dig mer om det, hänvisar du till den officiella dokumentationen.

Och medan du är här, kolla in några av våra andra inlägg i Android apputveckling!