2024. április 25., csütörtök

Gyorskeresés

Útvonal

Cikkek » Telefónia rovat

Tasker - AZ Android alkalmazás

Mitől okos egy telefon? Mert szalad rajta az Angry Birds, netezel, közösségi oldalon lógsz? Közel sem...

[ ÚJ TESZT ]

Változók használata

Lássuk csak...
A variable változót jelent, ami programozásban is pont azt tudja, mint a matekban, hogy fel tud venni egy értéket (egy elem, aminek az értéke tetszőlegesen változtatható: változó). Esetünkben típusától függően lehet szám, betű, egyéb karakter és karakterlánc is (szöveg). Szerencsére a típusával nem kell foglalkozni, azt a Tasker magától eldönti a felvett értéke alapján (sok programozásból ismert nyelvvel ellentétben). Ez annyiból fontos - hogy érthető legyen -, ha számot adsz meg, akkor szám típusú lesz, és miután deklaráltad (létrehoztad) a változót, utána ha lekérdezed az értékét, akkor a szám típusúnak mindig nulla lesz alapból, hiába nem adtál neki még semmilyen értéket. A "szöveg" típusúak megmaradnak üresnek, amíg nem kapnak egy értéket.

Megkülönböztetünk még két fajtáját ezeknek, a globális és helyi változókat. A globális változóról annyit kell tudni, hogy a Taskerben bárhonnét elérhető, bármikor le lehet kérdezni az értékét, lehet módosítani, dolgozni vele, akár több egymástól független Taskban és Contextben. A helyi változó ezzel szemben csak az adott Task-ban elérhető, tehát egy Task elindításakor kerül létrehozásra, valamilyen műveletet hajtunk végre rajta, majd a Task végeztével törlődik. Jellemzően ideiglenes információ tárolásra használjuk a helyi változókat. Úgy tudjuk megkülönböztetni őket, hogy a helyi változók megnevezésében csupa kis betűket használunk, %pelda. Ezzel szemben a globális változók neveiben van legalább egy nagybetű (de nem feltétel, hogy mindegyik nagybetű legyen), a %Pelda és a %PELDA is globális változót takar (ugyanúgy a %pelDa, %peldA, stb). Taskerben a változókat a % jelöli, bármi előtt van egy %, akkor azt változónak értelmezi.

Na most a változókat feltételek vizsgálatakor szokás alkalmazni Taskerben elsősorban, például azt mondom, hogy kikapcsolom a WiFit, ha a képernyő lezár. A képernyő lezárásához nincs beépített változója a Tasker-nek (az összes csupa nagybetűs változó előre definiált rendszerváltozó, mellyel az Androidot monitorozza a program), így nem tudom megállapítani Tasker-en keresztül a telefonról, hogy a képernyőzár épp be van-e kapcsolva. De van például olyan Context, ami a képernyő kikapcsolására aktivál és ha ez megtörténik, akkor tudom, hogy a képernyő kikapcsolt (és vele együtt a képernyőzár meg be). Így létre tudok hozni magam is egy globális változót, amiben ezzel a profillal nyomon tudom követni a dolgot.

Példa profilunk arra fog szolgálni, hogy egy általunk létrehozott globális változót tartson karban.
A profilban lévő state típusú Contex legyen mondjuk a State/Display/Display State és a paremétere pedig "off". Ez a Context aktiválja a profilt, ha a képernyő kikapcsol. Enter Task-ban pedig válasszuk a Variable/Variable Set task-ot, majd adjuk neki a %ScrEEnlocK nevet (nagybetűk száma lényegtelen, elég egy darab is belőle, hogy globális legyen, de felőlem olyan mintákat is lehet alkalmazni, ami tetszik), és a "To" mezőben meg definiáljuk milyen értéket vegyen fel. Legyen ez most "1"!
A bináris számrendszerben az "1" jelenti az "igazat", a "0" meg a "hamist". Esetünkben tehát a %ScrEEnlocK nevű változó értéke igazat szimbolizál. De adhatnánk neki bármi más tetszőleges értéket, lehetne akár "krumplis zsák" is, ha nekünk ez tetszik. De az 1 és 0 gyors, és egyszerű, könnyen kezelhető. Készítsünk egy Exit Task-ot is, amiben ennek a változónak "0" értéket adunk
(ugyanaz a műveletsor, ugyanaz a task, csak a "To" mezőben más értéket választunk)! Mentsük el a változásokat (Tasker főképernyőn is pipa), majd ha jól csináltuk, kész is van.

Innentől fogva minden alkalommal, mikor a képernyő kikapcsol, aktiválódik a profil. Amint ez bekövetkezik, akkor az előre létrehozott %ScrEEnlocK változó értéke felveszi az "1"-et, ha bekapcsol a képernyő (és vele feloldásra kerül a képernyőzár), akkor pedig "0"-t. Ezt az új változónkat felhasználhatjuk másik profilokban, Task-okban.

Ugye minden egyes task-nál látható az if kapcsoló, amivel feltételt tudunk vizsgálni.
Egy ilyen feltételben megnézzük a %ScrEEnlocK változó értékét, és attól függően végezzük el a feladatot, hogy mi az. Ha a feltétel igaznak bizonyul, akkor hajtódik végre az a parancs, amit feltételhez kötöttünk. Ha hamis az a feltétel (nem teljesül), akkor nem hajtódik végre a parancs és továbblép a program a következő programsorra (sorban a következő lépés a Task-ban). Így néz ki egy feltétel: IF %ScrEEnlocK = 1 akkor hajtsd végre a parancsot.

Egyenlőség jel (Maths: Equals) helyett használható még a ~ (Matches) operátor is, ami annyit tesz, hogy "egyezik". Ez szöveges vizsgálatnál használatos, de számok esetén is lehet alkalmazni, viszont arra figyelni kell, hogy ilyenkor szövegesen értelmezi a számokat is, nem pedig számként (ennek gyakorlati buktatója, amikor egy szám típusú változó akkor is nulla értéket vesz fel, amikor még nem is adtunk neki értéket egyáltalán, míg a szöveg a típusú teljesen üres marad). Matches példa:
IF %ScrEEnlocK ~ yes akkor blablabla. Vagyis itt a változónak egy adott karakterlánccal kell egyezni, ami természetesen szám is lehet (speciális kivételek a kézikönyvben, azokat leszámítva ASCII karakterek lehetnek).

De ugye tudjuk már, hogy a programozásban elterjedt, mi szerint az igaz és hamis állításokat 1-essel és 0-val helyettesítik, ahol az 1 az igaz. Vagyis ha a képernyő lezár, akkor sokkal egyszerűbb a változónak megadni azt, hogy "1", mint szövegesen, hogy pl "igaz", "lock", "screen off", vagy bármi egyebet. Viszont van aki úgy programoz, hogy nem 0-t és 1-est használ, hanem 1-est és 2-est, mivel a szám típusú változók lekérdezésekor akkor is 0-át mutatnak, ha egyébként nem adtál meg nekik semmilyen értéket. Van pár helyzet, ahol nem biztos, hogy ezt figyelmen kívül lehet hagyni. Ami engem illet, nekem megfelel az 1 és 0 is, mivel többnyire csak azt vizsgálom a feltételeimben, hogy mikor lesz igaz. Azt nem vizsgálom, hogy mikor hamis. De ha te később csinálsz majd olyan feladatot, ahol a hamisnak is szerepe lesz, akkor figyelembe kell venni ezt a jelenséget, mert becsapós lehet.

A lényeg pedig, hogy változót a Variable Set paranccsal lehet deklarálni és ugyanezzel a paranccsal tudunk neki értéket is adni. Vagyis inkább ezzel csak beállítasz egy értéket egy változónak, de nyilván ha az a változó addig nem létezett, akkor okosan létre is hozza a program.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.