Panoul de setări rapide nu are nevoie de o introducere pentru utilizatorii Android. Ei folosesc switch-urile pe care le oferă tot timpul pentru a activa și dezactiva serviciile precum WiFi, Bluetooth și GPS. De-a lungul anilor, a crescut și sa îmbunătățit atât de mult încât rareori este nevoie să se deschidă realitatea Setări app în aceste zile.
Până de curând, panoul de setări rapide a fost blocat, iar utilizatorii trebuiau să fie mulțumiți de o colecție largă, dar fixă de întrerupătoare - cunoscuți în mod obișnuit ca dale. Cu lansarea Android Nougat, totuși, nu mai este cazul. Utilizatorii au acum posibilitatea de a adăuga, elimina și rearanja plăcile. În plus, ca dezvoltator de aplicații, puteți oferi propriile plăci personalizate.
În acest sfat rapid, vă vom arăta cum să utilizați API pentru setările rapide pentru a crea o placă particularizată de la zero.
Înainte de a continua, asigurați-vă că aveți următoarele:
În esență, plăcile sunt doar comutatoare ușor accesibile pe care utilizatorii le pot apăsa în orice moment - chiar și atunci când dispozitivele lor sunt blocate. Deoarece nu pot afișa decât o pictogramă și o etichetă, ele pot fi folosite numai pentru acțiuni foarte specifice, dar simple.
Fiecare țiglă are o stare asociată cu ea. La fel ca un comutator din lumea reală, acesta poate fi fie în stare "on", fie în "off". Așa cum s-ar putea să te aștepți, o faianță care este pe mai luminoasă decât una care este oprită. Deși trebuie să gestionați singuri starea plăcii, platforma Android își gestionează automat strălucirea.
Pentru a oferi o placă particularizată, aplicația dvs. trebuie să aibă un serviciu care să extindă TileService
clasă.
clasa MyTileService: TileService ()
În timp ce menționăm serviciul în manifestarea proiectului, trebuie să îi dați o etichetă și o pictogramă, ambele care vor fi folosite pentru a crea aspectul implicit al plăcii. Pentru a vă oferi un exemplu realist, vom crea acum o placă care face ca dispozitivul utilizatorului să vibreze continuu atâta timp cât este pornit. Eticheta va fi Tremura, și icoana ei va fi vibrație, care este disponibil în Vector Asset Studio sub Notificare secțiune.
Apoi, trebuie să adăugați un filtru de intenție la definiția serviciului, astfel încât acesta să poată răspunde la android.service.quicksettings.action.QS_TILE
acțiune. Pentru a vă asigura că poate fi lansat numai de sistemul Android, trebuie să îl protejați și cu android.permission.BIND_QUICK_SETTINGS_TILE
permisiune.
În acest moment, definiția serviciului ar trebui să arate astfel:
Acesta este codul de care aveți nevoie pentru a afișa o placă particularizată. Dacă implementați aplicația acum și navigați la Editați | × secțiunea din panoul de setări rapide, ar trebui să puteți vedea țigle în lista de plăci disponibile.
Glisați-l și fixați-l lângă una dintre plăcile implicite, astfel încât să puteți accesa mai ușor.
Probabil că ați observat că țigla noastră este destul de strălucitoare. Asta pentru că încă nu am inițializat starea sa, iar sistemul crede că este "pe". Pentru a schimba țigla astfel încât să pornească în starea off atunci când utilizatorul o adaugă, puteți să o înlocuiți onTileAdded ()
manipulator eveniment al serviciului și setați stat
proprietate a qsTile
obiecte pentru Tile.STATE_INACTIVE
.
Ori de câte ori schimbați statul, trebuie să vă amintiți și să apelați updateTile ()
astfel încât aspectul plăcilor să se schimbe pentru a se potrivi cu starea.
suprascrie distracție onTileAdded () super.onTileAdded () // Stare actualizare qsTile.state = Tile.STATE_INACTIVE // Actualizare arată qsTile.updateTile ()
Dacă rulați aplicația acum, îndepărtați placa și adăugați-o din nou, ar trebui să vedeți că este oprită.
Chiar acum, nimic nu se întâmplă atunci când faceți clic pe țiglă. Puteți schimba asta prin suprascrierea onClick ()
manipulator de evenimente al serviciului.
În interiorul dispozitivului de tratare a evenimentelor, puteți să activați și să dezactivați țigla alternând între Tile.STATE_ACTIVE
și Tile.STATE_INACTIVE
state. Următorul cod vă arată cum să faceți acest lucru într-un mod simplu if-else
afirmație:
override fun onClick () super.onClick () dacă (qsTile.state == Tile.STATE_INACTIVE) // Porniți qsTile.state = Tile.STATE_ACTIVE startVibrating () // TODO altceva // Dezactivați qsTile.state = Tile.STATE_INACTIVE stopVibrating () // TODO // Actualizează aspectul qsTile.updateTile ()
Acțiunea asociată cu țiglă ar trebui să înceapă de îndată ce țigla este pornită și oprită imediat ce este oprită. Prin urmare, pe lângă actualizarea stării, codul pe care l-am adăugat în pasul anterior conține apeluri către startVibrating ()
și stopVibrating ()
metode.
startVibrating ()
metoda poate folosi vibra()
metoda lui Android vibrator
pentru a face telefonul să vibreze. vibra()
metoda, cu toate acestea, se așteaptă la o durată fixă. Pentru a vă asigura că telefonul vibrează continuu atâta timp cât placa este activată, o puteți apela în interiorul unei bucle, de preferință cu o durată scurtă. O astfel de buclă nu poate fi rulată în interiorul firului UI, firul pe care o utilizează serviciul de plăci de ceramică pentru manipularea evenimentului de clic.
În mod ideal, orice operațiune de lungă durată pe care doriți să o porniți sau opriți trebuie să fie plasată în interiorul unui IntentService
instanță. Pentru a păstra acest tutorial scurt, totuși, hai să facem o corutină pentru moment.
Următorul cod vă arată cum să executați buclă în interiorul unei corutine create utilizând lansa()
constructor de corutine:
distracție startVibrating () lansare în timp ce (qsTile.state == Tile.STATE_ACTIVE) (getSystemService (Context.VIBRATOR_SERVICE) ca vibrator) .vibrate (1000) // Vibrați o secundă // Așteptați o secundă înainte de a vibra din nou întârziere (1000)
Deși bucla de mai sus se va termina atunci când utilizatorul oprește țigla, vibrațiile pot dura o secundă suplimentară. Pentru a le opri imediat, puteți apela Anulare()
metodă a vibrator
serviciu în interiorul stopVibrating ()
metodă.
distracție stopVibrating () (getSystemService (Context.VIBRATOR_SERVICE) ca vibrator) .cancel ()
Tigla noastră personalizată este gata. Cu toate acestea, nu va funcționa decât dacă are permisiunea de a folosi vibratorul telefonului. Puteți să o solicitați adăugând următoarea linie în fișierul manifest al proiectului:
Dacă implementați aplicația acum și faceți clic pe placa particulară, telefonul dvs. ar trebui să înceapă vibrator. Dacă faceți clic pe acesta din nou, ar trebui să puteți opri vibrațiile imediat.
Dacă construiți o aplicație care oferă funcționalități sau informații unice, utilizatorii vor avea nevoie de acces foarte frecvent, oferind o placă particularizată cu ea, care poate îmbunătăți dramatic experiența utilizatorului. În acest tutorial, ați văzut cât de ușor este să creați o astfel de țiglă utilizând API-ul cu setări rapide pentru plăci.
Pentru a afla mai multe despre aceasta, consultați documentația oficială.
Și în timp ce sunteți aici, verificați câteva dintre celelalte postări ale noastre privind dezvoltarea aplicațiilor Android!