Hirdetés
- Hogy is néznek ki a gépeink?
- Melyik tápegységet vegyem?
- Milyen egeret válasszak?
- Milyen videókártyát?
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Gaming notebook topik
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Ami Kínában OnePlus Pad Pro, az errefelé mégis csak Pad 2 lett
- Blu-ray lejátszók
- Milyen TV-t vegyek?
Új hozzászólás Aktív témák
-
Mr Dini
addikt
válasz
Mr Dini
#6404
üzenetére
Hát, ismét sikerült tartani a határidőt, s sikerült pont egy-két héten belül kiadni a megoldást...
A lelkesedésem a témában nem lanyhult, csupán krónikus időhiányban szenvedtem.Nos, megoldást még nem kaptam a taskra, de mivel első alkalom, megértem.
Ezért vágjunk is bele!A kész task eleje valahogy így fog kinézni:
A task első eleme egy szimpla Load Image, aminek betallóztam egy képet (példánkban a Tasker ikonját, de bármi lehet). Ez lesz majd az értesítésünk nagy ikonja. És azért nem Java-val töltöttem be, mert így egyszerűbb.

A következő lépésben pedig lekérjük az applikáció erőforrásokért felelős osztályát. Erre azért lesz szükség, mivel az értesítésünk mini ikon azonosítóját az említett osztály segítségével tudjuk majd lekérni. Ehhez adjunk hozzá egy új elemet a taskhoz, aminek a típusa legyen Code->Java Function. Itt a 'Class or Object' mező feletti gőzölgő kávé ikont kell megérinteni, majd a felugró lista alján válasszuk a CONTEXT változót. Ez a kávéspohár lista jeleníti meg az általunk létrehozott változókat, illetve a két Taskerbe épített gyári darabot. Az egyik ezek közül a CONTEXT, ami az adott app környezeti dolgaihoz enged hozzáférést adni (pontosabb leírás a Droid dev oldalon: [link]), a másik pedig a Load Image által betöltött képet fogja visszaadni. Ez az IBUFFER nevet kapta (később használni is fogjuk). Ha megvan a CONTEXT változó, akkor az alatta elhelyezett 'Function' mező feletti nagyítóra kattintsunk, majd válasszuk ki a listában a getResources metódust. Ha mindent jól csináltunk, a Function mező ezzel fog gazdagodni:
getResources
{Resources} ()Ez azt jelenti, hogy a getResources függvényt hívjuk meg, melytől várunk egy Resources típusú visszatérési értéket (a visszatérési érték mindig '{}'-k között van, amennyiben van a függvénynek ilyen) és a két zárójel közé kerülnének a bemeneti változók. De mivel egy metódussal van dolgunk, nem pedig egy függvénnyel, így nem szükséges változókat átadni neki, mindenképpen megkapjuk esetünkben a Taskerhez tartozó Resources osztályt (igen, a függvény és metódus közt csupán ennyi különbség van :)). Ezt a visszatérési értéket pedig tároljuk le az egyszerűség kedvéért a 'res' nevű változóban. Azaz írjuk be a 'Class or Object' felett megjelent 'Return {Resources}' mezőbe a 'res' (a ''-k nem kellenek, csak elválasztási célokat szolgálnak!) szócskát. Vizuális típusoknak pedig [itt] egy screenshot az utóbbi lépésről.

A következőkben használjuk fel az imént létrehozott 'res' változónk, s kérjük le a leendő értesítésünk mini ikonját, mely mindenképp kötelező az összes értesítéshez. Ehhez szúrjunk be ismét egy Java Function elemet rögtön az előző után (gyakori lépés
), majd a 'Class or Object' résznél válasszuk ismét a kávéspoharat, s azon belül a friss és ropogós 'res' változónk! A 'Function' fülnél pedig keressük ki a getIdentifier függvényt. A kiválasztás után pedig egymás után három 'Param (String)' fog megjelenni. Az első mezőbe írjuk be a "cust_notification"-t, a másodikba a "drawable"-t, míg az utolsó helyre a "net.dinglisch.android.taskerm"-et. Az idézőjel opcionális, viszont erősen ajánlom ebben az esetben a használatát, különben előfordulhat, hogy a kávéspohár alatt megjelenik majd, mint változó. Ez pedig sok-sok task/változó esetén nem kellemes, higgyétek el nekem...
Végezetül pedig a 'Return {int}' helyébe írjuk mondjuk a 'cIcon'-t. Ezzel meg is kaptuk a Tasker értesítési mini ikonjának azonosítóját. [kép]Most, hogy előkészítettünk pár dolgot, rakjuk össze magát az értesítést! Ehhez az Android egy NotificationCompat.Builder osztályt biztosít, ami nagyon megkönnyíti számunkra a folyamatot. De első lépésben valahogy le kellene kérnünk ezt az osztályt, hogy használhassuk. Ehhez nyissunk meg egy újabb 'Java Function'-t, viszont most a 'Class or Object' mezőnél ne a kávésbögrére, hanem a nagyítóra menjünk. Írjuk be a keresőbe a 'Notification' szócskát, majd válasszuk a listában a 'Notification$Builder'-t! A Function részben szintén nagyító, majd válasszuk a 'new'-ot, de vigyázzunk, nekünk csak a sima Context bemeneti értékkel megáldott verzió megfelelő, így válasszuk azt! Alatta pedig a megjelent 'Param (Context)' mezőhöz keressük ki a kávésbögrével a 'CONTEXT' változót (kávé helyett a kézzel beírás is tökéletes, amennyiben pontosan tudjuk, mire van szükségünk)! A Return mezőbe pedig írjunk mondjuk 'mNotificationBuilder'-t. Ezzel a változóval pedig már dolgozhatunk is a közeljövőben!
[kép]Most adjunk a leendő értesítésnek egy címet! Ehhez sokadszorra is egy Java Function-ra lesz szükségünk. A 'Class or Object' mezőbe kávézzuk ki az imént inicializált 'mNotificationBuilder' változónk, 'Function'-nek pedig keressük ki a setContentTitle függvényt! A 'Param (CharSequence)' alá pedig írjuk idézőjelek közé az értesítés nevét. Mondjuk azt, hogy "Test notificaton". Nem győzőm hangsúlyozni az idézőjel fontosságát, mivel ez a CharSequence típus megköveteli a meglétét! A Return értéket hagyjuk üresen, mivel ebben az esetben a változtatásokat az mNotificationBuider őrzi meg (felülíródik amit módosítunk).[kép]
Ha szeretnénk az értesítésnek szöveget is a cím mellé (nem kötelező), akkor ismételjük meg az előző lépést, annyi különbséggel, hogy a setContentTitle helyett válasszuk a setContentText fv.-t!
A következő lépés legyen egy elengedhetetlen rész, mégpedig annak a bizonyos mini ikonnak a beállítása, amit korábban lekérdeztünk. Ha ez nincs meg, vagy hibás, abban az esetben az értesítésünk nem fog majd megjelenni... Ennek állítása rendkívül egyszerű, csak kövessük az előző két lépést. De itt a setSmallIcon-t válasszuk (aminek csak egy int bemeneti változója van), s a 'Param (int)' mezőjébe kávézzuk ki a korábbi cIcon változónkat!
Ezzel kész is van az alapkoncepció, hiszen ez a páros már egy használható értesítést tud alkotni. Viszont a példának még koránt sincs vége, hiszen a kicsi ikon mellé milyen jól mutatna egy nagy ikon is, nemde?
Ezért kellett az első lépésben nekünk a Load Image. Megint csak járjunk el hasonlóan az előzőekhez! Most viszont a setLargeIcon-ra lesz szükségünk. Paraméternek pedig szintén kávézzunk, keressük meg a lista alján elhelyezkedő IBUFFER változót, ami jelenleg az ikonunk tartalmazza a Load Image miatt. Hála a Taskernek. 
Még egy kis színezést is adhatnánk az értesítésnek, melyhez a következő Java Function 'Class or Object' nagyítójában a Color osztályt kell megjelölni. A 'Function' részben szintén a nagyító alatt találunk egy argb függvényt. Én most egy szép, élénk zöldet szeretnék, ezért a paraméterekhez egyenként, sorban ezeket írtam: 255, 0, 255, 0. A visszatérési, azaz return értéket pedig a notificationColor változóban tároltam le.[kép]
Most, hogy megvan a szín, már csak rá kell tenni az értesítésre. Ehhez pedig ismét hasonlóan a setContentTitle-hez (és társaihoz) kell eljárnunk, de most a setColor-ra lesz szükség, a notificationColor paraméterrel.
Már majdnem kész az értesítés, viszont hosszabb leírásoknál nem elég ez a csöpp kis értesítés. Ezért érdemes kiterjeszthetővé tenni. Ehhez kelleni fog egy Java Function, 'Class or Object': BigTextStyle; Function: new {BigTextStyle} (android.app.Notification$Builder). {Bízom benne, hogy most már a nagyító és a kávésbögre berögzült, tudatos mozdulatsorrá vált, így a következő pár lépésben nem tervezem már részletezni.} Mint látható, a "függvénynek" szüksége van egy Builder típusú bemeneti változóra, azaz adni kell neki egy egyszerű értesítést, amit át tud alakítani kiterjeszthetővé. Szerencsére nekünk pont van is egy ilyen változónk, ami ugye az mNotificationBuilder névre hallgat. Így adjuk meg neki azt! A neve pedig legyen mondjuk 'mBigTextStyle'! [kép]
Következőleg a 'Class or Object' mezőbe tallózzuk az mBigTextStyle váltózót, majd a Function részben keressük meg a setBigContentTitle függvényt! Paraméternek adjunk mondjuk "Test notification"-t itt is. ez lesz a kiterjesztett értesítés neve.[kép]
Az előző lépést kövessük el ismét, annyi különbséget eszközölve, hogy a Function helyébe most a bigText függvény kerüljön, az érték pedig (szintén idézőjelek közt) legyen az a hosszabb szöveg, amit ki akarunk iratni kiterjesztéskor a leírásban.
Most, hogy fel lett építve az értesítés, s már nem tervezünk rajta változtatni, készen áll a megjelenítésre. Ehhez használjuk az mBigText változónkat, mint 'Class or Object', 'Function'-nek a build-et, s visszatérésnek az 'mNotification'-t!
Most pedig le kell kérnünk a rendszertől az értesítéskezelőt, hogy kiküldhessük/frissíthessük az értesítésünk. Hogy ezt el tudjuk követni, nyissunk megint csak egy Java Function elemet, a 'Class or Object' részbe tallózzuk ki a CONTEXT-et, 'Function'-nek pedig a getSystemService fog kelleni nekünk. Figyeljünk rá, hogy a String típusú bemeneti értékkel ellátott darabot válasszuk, ne pedig a Class-t! A paramétere pedig legyen "notification". Végül pedig mentsük el a visszatérési értékét a '(NotificationManager) mNotificationManager' nevű változóba. Bizony, itt meg kell adnunk a névnél zárójelben a változónk típusát, mivel a getSystemService függvény egy szimpla Object-tel tér vissza. A Tasker pedig így tudja, hogy ez valójában nem csak egy Object, hanem egy NotificationManager típus is. Ez pedig például azért hasznos, mert a későbbiekben nagyítózva a változóhoz elérhető függvényekhez, a Tasker nem az Objektum, hanem a NotificationManager típus elérhető fv.-jeit fogja nekünk felsorolni. Egyébként ez hasonlóan működik a natúr Java-ban is, cast-olásnak hívják.[kép]
És végre elérkeztünk az utolsó lépéshez, mégpedig az értesítés tényleges kiküldéséhez!
Ehhez nyissunk megszokottan egy Java Function-t, 'Class or Object'-nek válasszuk a méltán szimpatikus mNotificationManager változónk, majd a Function részben keressük meg nagyító alatt a notify {} (int, Notification) metódust. Az első, int típusú paraméter legyen mondjuk '1'. Ez lesz az alkalmazáson belüli értesítések közül az egyes sorszámú ekkor. S erre hivatkozva lehet majd a későbbiekben frissíteni/törölni az értesítést például. A második paraméter pedig legyen az mNotification.[kép]Kész is vagyunk! Most, ha mindent jól csináltunk, meg is jelenik a task lefuttatásakor az értesítés!
Viszont, ha valamiért mégsem történne ez, akkor innen letöltve az én verzióm, lehet összehasonlítást végezni. Amennyiben pedig ezek után sincsen meg a kiba forrása, tessék kapálózni bátran, hisz azért van a fórum! 
Sok sikert hozzá!

-
Bozek
nagyúr
válasz
Mr Dini
#6404
üzenetére
Örülök, hogy ennyire otthon vagy a JS-ben és tanítani szeretnél minket, de ilyen értesítéses cuccot miért kell megírni abban? Ott az AutoNotification, mindkét említett dologra tökéletes, mindenféle programozási tudás nélkül. Sőt, még ezeknél sokkal többre is. Ha akarod, akár alap HTML kódokkal is tudod formázni az értesítést.
Új hozzászólás Aktív témák
- Tudástár Tasker - AZ Android alkalmazás
- Redragon Kumara K552 RGB Brown Switch magyar billentyűzet
- Lenovo Thinkpad P1 Gen 6 - i9-13980HX, 32GB, 2TB SSD, 16" WQUXGA (3840 2400), RTX 4090
- 15.gen! Intel Core Ultra 9 285K +16-32GB DDR5 RAM +hűtött VRM-es Z890 lap! GAR/SZÁMLA (a Te nevedre)
- OP AudioCodes C450HD Ip Phones - Szines kijelzős - Teams/ Zoom telefon - Új dobozos
- ATEN Cat 5 KVM over IP Switch Altusen KH1508AI - Új ára 284.000Ft
- Telefon felvásárlás!! Apple Watch Series 9/Apple Watch Ultra/Apple Watch Ultra 2
- Samsung Galaxy S22 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! MSI B450M R5 5600X 32GB DDR4 512GB SSD RX 6700XT 12GB Zalman S2 TG GIGABYTE 750W
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
A lelkesedésem a témában nem lanyhult, csupán krónikus időhiányban szenvedtem.
Ezért vágjunk is bele!

Ehhez nyissunk megszokottan egy Java Function-t, 'Class or Object'-nek válasszuk a méltán szimpatikus mNotificationManager változónk, majd a Function részben keressük meg nagyító alatt a 


