Hurtig Tips Opprett en tilpasset hurtiginnstillinger for Android

Det raske innstillingspanelet trenger ingen introduksjon til Android-brukere. De bruker bryterne den tilbyr hele tiden for å slå tjenester som WiFi, Bluetooth og GPS på og av. Gjennom årene har den vokst og forbedret så mye at det sjelden er behov for å åpne selve innstillinger app disse dager.

Inntil nylig var det hurtige innstillingspanelet låst, og brukerne måtte være fornøyd med en stor, men fast samling av brytere, vanligvis kjent som fliser. Med lanseringen av Android Nougat er det ikke lenger tilfelle. Brukere kan nå legge til, fjerne og omorganisere fliser. Dessuten, som en apputvikler, kan du tilby dine egne tilpassede fliser.

I dette raske tipset viser jeg deg hvordan du bruker Quick Settings Tile API til å lage en tilpasset flis fra bunnen av.

Forutsetninger

Før du fortsetter, må du kontrollere at du har følgende:

  • den nyeste versjonen av Android Studio
  • en telefon som kjører Android Nougat eller høyere 

1. Forstå fliser

I hovedsak er fliser bare lett tilgjengelige brytere som brukerne kan trykke når som helst - selv når enhetene er låst. Fordi de ikke kan vise noe mer enn et ikon og en etikett, kan de bare brukes til meget spesifikke, men enkle handlinger.

Hver flis har en tilstand forbundet med den. Akkurat som en ekte verdensknapp, kan den enten være i en "på" -status eller en "av" -stat. Som du kanskje forventer, er en flis som er på, lysere enn en som er av. Selv om du må administrere tilstanden til flisen din, administrerer Android-plattformen automatisk lysstyrken.

2. Opprette en tilpasset flis

For å kunne tilby en tilpasset flis, må appen din ha en tjeneste som utvider TileService klasse.

klasse MyTileService: TileService () 

Mens du nevner tjenesten i prosjektets manifest, må du gi den en etikett og et ikon, som begge brukes til å lage standard utseende på flisen. For å gi deg et realistisk eksempel, skal vi nå lage en flis som gjør at brukerens enhet vibrerer kontinuerlig så lenge den er på. Dens etikett vil være Skjelve, og ikonet vil bli vibrasjon, som er tilgjengelig i Vector Asset Studio under Melding seksjon.

Deretter må du legge til et hensiktsfilter til tjenestens definisjon slik at det kan svare på android.service.quicksettings.action.QS_TILE handling. For å sikre at den kun kan lanseres av Android-systemet, må du også beskytte den med android.permission.BIND_QUICK_SETTINGS_TILE tillatelse.

På dette tidspunktet bør tjenestens definisjon se slik ut:

    

Det er all koden du trenger for å vise en egendefinert flis. Hvis du distribuerer appen din nå og navigerer til Redigere delen av hurtiginnstillingspanelet, bør du kunne se fliser i listen over tilgjengelige fliser.


Dra den og slipp den nær en av standardfliser, slik at du får tilgang til det lettere.

3. Initialisering av flisene

Du må ha lagt merke til at flisene våre er ganske lyse. Det er fordi vi fortsatt ikke har initialisert sin tilstand, og systemet mener det er "på". For å endre flisen slik at den starter i slukket tilstand når brukeren legger til det, kan du overstyre onTileAdded () hendelsehandler av tjenesten og still inn stat eiendom av qsTile ha innvendinger Tile.STATE_INACTIVE.

Når du endrer staten, må du huske å også ringe updateTile () metode slik at flisens utseende endres for å matche staten.

overstyr moro onTileAdded () super.onTileAdded () // Oppdater status qsTile.state = Tile.STATE_INACTIVE // Oppdater utseende qsTile.updateTile ()

Hvis du kjører appen nå, fjerner du flisen, og legger den til igjen, du bør se at den er av.

4. Legge til en Click Handler

Akkurat nå skjer ingenting når du klikker på flisen. Du kan endre det ved å overstyre ved trykk() hendelsehandler av tjenesten.

Inne i hendelseshandleren kan du slå på og av flisene ved å skifte mellom Tile.STATE_ACTIVE og Tile.STATE_INACTIVE stater. Følgende kode viser deg hvordan du gjør det med en enkel if-else uttalelse:

overstyr moro onClick () super.onClick () hvis (qsTile.state == Tile.STATE_INACTIVE) // Slå på qsTile.state = Tile.STATE_ACTIVE startVibrating () // TODO annet // Slå av qsTile.state = Tile.STATE_INACTIVE stopVibrating () // TODO // Oppdater utseende qsTile.updateTile ()

5. Bruk av Vibrator

Handlingen som er knyttet til flisen, skal starte så snart flisen er slått på og stoppe så snart den er slått av. Derfor, i tillegg til å oppdatere staten, inneholder koden vi la til i forrige trinn samtaler til startVibrating () og stopVibrating () fremgangsmåter.

De startVibrating () Metoden kan bruke vibrere() metode for Android vibrator klassen for å få telefonen til å vibrere. De vibrere() Metoden forventer imidlertid en fast varighet. For å sikre at telefonen vibrerer kontinuerlig så lenge flisen er på, kan du ringe den inne i en sløyfe, helst med kort varighet. En slik sløyfe kan ikke kjøres inne i UI-tråden, tråden flisetjenesten bruker for sin klikkhendelseshåndterer.

Ideelt sett må enhver langrennoperasjon du ønsker at flisetjenesten skal starte eller stoppe, plasseres inne i en IntentService forekomst. For å holde denne opplæringen kort, skjønner vi, la oss gjøre med en coroutine for nå.

Følgende kode viser deg hvordan du kjører løkken inne i en coroutine opprettet ved hjelp av lansering () Coroutine Builder:

morsom startVibrating () start while (qsTile.state == Tile.STATE_ACTIVE) (getSystemService (Context.VIBRATOR_SERVICE) som Vibrator) .Vibrate (1000) // Vibrer for et sekund // Vent et sekund før vibreringen igjen forsinkelse (1000)

Selv om sløyfen ovenfor vil avslutte når brukeren slår av flisene, kan vibrasjonene vare i et ekstra sekund. For å stoppe dem umiddelbart, kan du ringe Avbryt() metode av vibrator service inne i stopVibrating () metode.

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

Våre egendefinerte fliser er klare. Det vil imidlertid ikke fungere hvis det ikke har tillatelse til å bruke telefonens vibrator. Du kan be om det ved å legge til følgende linje i prosjektets manifestfil:

Hvis du distribuerer appen nå og klikker på den egendefinerte flisen, bør telefonen begynne å vibrere. Ved å klikke på den igjen, bør du kunne stoppe vibrasjonene umiddelbart.

Konklusjon

Hvis du bygger en app som tilbyr unik funksjonalitet eller informasjon, vil brukerne ha behov for tilgang til svært ofte, og tilbyr en egendefinert flis med det kan dramatisk forbedre brukeropplevelsen. I denne veiledningen så du hvor lett det er å lage en slik flis ved hjelp av Quick Settings Tile API.

For å lære mer om det, se den offisielle dokumentasjonen.

Og mens du er her, sjekk ut noen av våre andre innlegg på Android app utvikling!