Hirdetés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Külföldi prepaid SIM-ek itthon
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Az 5 legnagyobb bénázás a mobilpiacon idén
- Android szakmai topik
- One mobilszolgáltatások
- A piac legerősebb kameráját ígéri a Xiaomi 17 Ultra
- Apple Watch
- Drága Bluetooth tagek olcsóbb alternatívái (MiLi MiTag, LiTag, OTAG, stb.)
- Xiaomi 15T Pro - a téma nincs lezárva
Ú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á!

Új hozzászólás Aktív témák
- Tudástár Tasker - AZ Android alkalmazás
- Autós topik
- YouTube
- Holdbázis és űrkupola az Egyesült Államok csillagászati terveiben
- Világ Ninjái és Kódfejtői, egyesüljetek!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- juhi11: Karácsony esély, hogy észrevegyük: mások is valakik - még Isten is
- Milyen processzort vegyek?
- TCL LCD és LED TV-k
- Milyen egeret válasszak?
- Azonnali VGA-s kérdések órája
- További aktív témák...
- 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
- AirPort Extreme 802.11n (3rd Generation) Model A1301 -
- BLACKBOX ServeSwitch octet 724-746-5500 -
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
- Apple iPhone 15 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 15 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- SteelSeries Apex Gaming billentyűzet, német, RGB
- HP 150W töltők (19.5V 7.7A) kis kék, kerek, 4.5x3.0mm
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
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 


