Hirdetés
- Brogyi: CTEK akkumulátor töltő és másolatai
- hcl: Google Billingclient 8.x Android példaprogram
- urandom0: Mégsem számőzöm az AI-t az életemből :(
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- GoodSpeed: Munkaügyi helyzet Hajdú-Biharban: észak és dél
- laca223: A civilizáció mint bugos operációs rendszer
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- laca223: Miért győz a kollektív meggyőződés akkor is, ha saját magát teszi tönkre?
Új hozzászólás Aktív témák
-
Mr Dini
addikt
Például a snapchat. Azt szeretném megoldani, hogy adjon ki egy hangot a telefon, ha egy bizonyos személy írt és nem képet/videót küldött. Ahogy néztem az összesnek csak annyi a szövege, hogy from xy, viszont az ikon szövegnél kék, képnél piros, videónál lila. Innen tudnám, hogy mi jött.
De köszi a választ, akkor marad a java applet...
-
Mr Dini
addikt
Üdv!
Elkezdtem megint Taskerezni és azt szeretném megcsinálni, hogyha jön egy bizonyos apptól egy bizonyos ikonnal rendelkező értesítés, akkor csinálja ezt a task, ha meg egy másik ikonnal, akkor csinálja azt. Sajnos a két típusú notification szövegben egyáltalán nem tér el, csak az ikonjuk különböző.
Létezik, hogy a tasker nem képes az értesítés ikon lekérésre? Tudom, van az autonotification, de az meg kicsit ágyúval verébre....
Köszi!
-
Mr Dini
addikt
Mondjuk ebben az esetben figyelembe kell venned az évet is, hiszen december-január közt mi történne. Így már három dolgot kell ellenőrizni plusz van egy tömböd, ami sajnos a Taskerben mindenképp indexelt. Így plusz memória+számítás. Míg magát akár az oldalon található szöveget seperc alatt átkonvertál Neked a rendszer UNIX idővé, onnantól pedig egy kivonás+check szerintem mind olvashatóság, mind teljesítmény szempontjából elegánsabb. Ja és nem kell pluginekhez folyamodni, hanem a vanilla Tasker berkekben meg tudod oldani a műveletet. Bár egy jó ideje nem Taskereztem, ez érdekes dolognak tűnik, lehet összedobom én is, aztán összehasonlítjuk!

@Somatom
Volt egy befejezetlen ügyem errefelé, de egyébként igen ritkán van csak alkalmam felnézni.
De ahogy látom a reszponzív felület még mindig legenda.

-
Mr Dini
addikt
Használj UNIX time-et, az csak növekszik
. A formátumot pedig úgy konvertálod a végén ha szükséges megjeleníteni, ahogy szeretnéd. Ha jól rémlik van rá egy függvény. -
Mr Dini
addikt
válasz
Attila961
#6847
üzenetére
Onnantól kezdve, hogy van egy ilyen jellegű eseményed, a rendszerben azt kezdessz vele, amit csak szeretnél. Egy automatizáló segítségével pedig szemtelenül pofátlan módon
akár programozói tudás nélkül is össze lehet dobni egy érintés taskot. Az más kérdés, hogy ez root/AutoAppok nélkül nem fog menni.A távirányítóval meg az a gond, hogy ha infra, az bizony nem fogja bírni a nagyobb hatótávot.
@Somatom
Én táp megszakításokkal nem szórakoznék. Oké lehet benne akármilyen védelem, jobb félni... Meg nem arra találták ki. A jack okosabb megoldás viszont.

-
Mr Dini
addikt
Á, így már világos a probléma, köszönöm!

A BT azért sem megoldás, mivel egyszerre csak egy eszközre tud csatlakozni, a tenisz meg általában két játékos sport.
A célhardverre ötletem sincs, viszont maga a wifi-s, belső hálózatos megoldás szoftveres hátterére igazából egy mezei push alapon működő kapcsolat elég lenne. Akár Taskerrel is össze lehet dobni mondjuk a PushBullett segítségével. Azt az appot meg nem feltétlenül tartanám meg, hisz programozói tudás nélkül is relatíve egyszerűen meg lehet valósítani egy sokkal precízebb appot, ahogy elnézem.
-
Mr Dini
addikt
Nekem sem világos a kérdésfelvetés sajnos, akárhogy próbálom értelmezni.
Odáig eljutottam, hogy van egy okosóra, egy tablet, illetve egy telefon. Az óra a telefonhoz csatlakozik (?), s egy gombnyomásra rajta a tabletnek csinálnia kéne valamit (ez a valami nem világos).
De hogy jön ide a TeamViewer a képbe? Programozós fórumokon ezt szokták az XY probléma jelzővel ellátni. Kérlek írd le azt, hogy pontosan mire van szükséged, s hogy hol szeretnéd használni ezt a gyakorlatban!
Egyébként ha órával szeretnél eseményeket végrehajtani a csatlakoztatott telefonon, az értesítésekkel lehet pl. játszadozni. A Tasker is tud ilyen notification-t formázni natívan Java Functionök segítségével. Kérdés, hogy az óra támogatja-e.
-
Mr Dini
addikt
válasz
aprokaroka87
#6700
üzenetére
Szia!
Jól sejted. A hálózati töltés, s a powerbank általi töltés nem megkülönböztethető, csak ha speciális a powerbankod van.
-
Mr Dini
addikt
válasz
aprokaroka87
#6654
üzenetére
Szia!
A Crashlytics SDK egy olyan kezdeményezés, melyet a fejlesztő bele tud húzni az applikációja forrásába (akár egy harmadik féltől származó könyvtárat). A célja pedig az, hogy amennyiben az app hibát produkál (monduk dob egy exception-t), akkor elküldi a fejlesztő által megadott szervernek a hiba részleteit, illetve a készülék/OS alapvető adatait. A JSON fájlok valószínűleg vagy a szerver válaszát, vagy magát a hibát tartalmazza (Elképzelhető, hogy amennyiben a hiba megtörténtekor nincs elérhető internetkapcsolat, ideiglenesen itt tárolja az adatokat, majd elküldi. Csak a fejlesztő valamit félrekonfiguráhatott, hogy megmaradnak). CLS kiterjesztésű fájlokról pedig a LaTeX-nél/vba-nél hallottam csak eddig. Nem hiszem, hogy osztályokról lenne szó, inkább a Crashlytics rövidítésére utalhat. Annyira nem ismerem az SDK-t, hogy tudjam mire jó...

Egyébként a korrekt (sőt, a Playben elméletileg kötelező lépés, a gyakorlatban nem tudom ki(k) ellenőrzi(k)), ha az app ad lehetőséget az ilyesfajta adatok elküldésének tiltására mondjuk a beállítások fülön. Például a PH! app esetében is így van megoldva a küldés.
A rootot igénylő mappák listázásának problémája pedig régóta fennálló jelenség. Van olyan rootolási mechanizmus, amely engedi, van olyan, amely pedig nem. Pent tud róla, de még nem lépett ezügyben semmit. Egyébként a hibát az okozza, hogy mint azt a logból is láthatod, a Tasker a List Files lefutása előtt ellenőrzi egy shellparancs lefutásával, hogy létezik-e az adott útvonal:
test -e /data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core
Érdekes, hogy megpróbálja végrehajtani a parancsot roottal is:
18.59.26/Shell runSync test -e '/data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core' root: true timeout: 3000
Kézzel lefuttatva ezt root shellből:
test -e /data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core || echo "Nincs ilyen fajl vagy konyvtar"
Mit kapsz vissza?
Hasonlóan próbáld meg -e helyett a -f kapcsolóval is lefuttatni:test -f /data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core || echo "Nincs ilyen fajl"
Ennek a második parancsnak ki kell írnia az üzenetet, ugyanis a -f azt nézi, hogy van-e ilyen fájl, mi pedig könytárat adtunk meg neki. Így false (2)-al kell, hogy visszatérjen a test.
Próbáld meg esetleg, hogy ha nincs záró / jel megadva az elérési útvonal mezőben, akkor add meg (/data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core/).
Azt viszont nem értem, hogy miért exit result: 0 ezt dobja a parancs eredményül... Úgy gondolom, hogy itt lehet a kutya elásva. Ugyanis létező állapot esetén 1-gyel kell, hogy visszatérjen a parancs, nem létezőnél pedig 2-vel...
Egyébként időzítve lefuttathatod az rm /data/data/com.paget96.lspeed/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core/*.json parancsot, ez pedig törölni fog minden json végű fájlt a mappából.
Illetve, amennyiben mégis szükséged lenne a könyvtárak listázására, akkor az ls parancs használatára vagy utalva. Ennek a kimenetét talán leggyorsabban JS-sel lehet feldolgozni (korábban mintha írtam is volna hasonló szkriptet, ami ls kimenetből dolgozott), s az teljes mértékben képes helyettesíteni a List Files menüpontot.
-
Mr Dini
addikt
válasz
Jonny71
#6628
üzenetére
Szia!
Tudtommal az időkép RSS-e már rég megszűnt.
Maximum a köpönyeggel lehetne valamit kezdeni, amiben JS lehet a segítségedre.
De ajánlom a wunderground API-t. Regelsz magadnak egy kulcsot, aztán adnak előrejelzést, s rengeteg adatot JSON, illetve XML formátumban, amit szintén könnyen lehet JS-sel feldolgozni.
A Viberrel kapcsolatban meg a Viber API-t ajánlom. Emlékeim szerint sikerült már működésre bírnom Java, vagy JS (általában inkább mindkettő
) segítségével. Ránézek Neked! -
Mr Dini
addikt
válasz
gyuri81
#6584
üzenetére
@HREH kolléga erre reflektált:
4. illetve a Google maps indítsa a Gps-t, ha kilépek akkor wifi off

De ha GPS kikapcs kell, akkor ugyanúgy rendelj egy exit taskot, igények szerint egy Task>Wait - plusz benne definiálva a kívánt idővel - lehet az első eleme, a második pedig egy Code>Run shell ezzel a paranccsal:
settings put secure location_providers_allowed -gpsHasonlóan az előzőekhez, a Use root legyen bepipálva!
-
Mr Dini
addikt
válasz
coelophysiis
#6545
üzenetére
Régebbi Tasker verzióknál tapasztaltam én is, hogy iszonyat lassú a másolás... S ezen a JavaScript sem tud sajnos segíteni, mivel moveFIle függvény még nincs a Taskerben... Egyedül Java Functionökkel lehet gyorsítani a másoláson, de az sem két kattintásos műveletsor.
A root annyit segíthet, hogy root-tal fel tudod tenni a busybox-ot, amiben van cp bináris. Azzal gyorsabb a másolás. Vagy végülis a rendszerben alapból csak cp nincs, mv van, Neked pedig pont arra lenne szükséged. Szóval akkor a JS-t egy kicsit átdolgozva lehet rendesen használni.
A hibára pedig... Már úgy látszik valamit a Tasker futtat a háttérben, ami nem éppen szerencsés a JS szempontjából. Tapizd meg a Tasker főoldalán a Tasks fület, majd a Kill all-ra menj rá. S utána futtasd le.
Illetve az
alert(shell("ls -la /storage/0000-0000/HÁTTÉRKÉPEK/01/", false, 10));egyáltalán visszatér valamivel (lehet, hogy a rendszeredből ki van herélve az ls, vagy nem szereti az ékezeteket a mappanévben)? -
Mr Dini
addikt
válasz
coelophysiis
#6543
üzenetére
Akkor ezek szerint a Te ls binárisod másképp működik.
Egy ideiglenesen létrehozott külön Javascriptletbe másold be kérlek ezt:
setClip(shell("ls -la /storage/0000-0000/HÁTTÉRKÉPEK/01/", false).split("\n")[0], false);
Futtasd le a 'play button'- nel, majd a vágólapod tartalmát másold be ide.
-
Mr Dini
addikt
válasz
coelophysiis
#6534
üzenetére
Szia!
Itt egy task, ami lefuttatáskor áthelyezi a JavaScriptben megadott path helyről azokat a fájlokat, amik a startDate és endDate intervallum közt lettek módosítva a Pictures mappába. Természetesen amit kell, azt módosíts kedvedre!

Nem a legszebb szkriptem, de működik, ha van
ls -lakimeneted. -
Mr Dini
addikt
Vagy a Test File helyett lehet dolgozni az
ls -lakimenettel is. JavaScriptben felbontja az ember egy tömbre, amibe csak azokat a fájlokat pakolja bele, ami a két időpont közt van. Majd ezt a tömböt vissza lehet adni a Taskernek, s egy for ciklussal végig lehet rajta szaladni. Vagy szebb megoldás objemktumba rendezni a fájlokat és a létrehozás idejét.Egyébként az, hogy Unix idővel tér vissza a Test file nem hátrány.
-
Mr Dini
addikt
Ez esetben tégy egy próbát a Pushbullettel. Amikor én próbáltam anno, akkor az API-jal díjmentesen lehetett küldözgetni adatokat, akár curllal is. Viszont itt is van valami felső limit... Ha több kell, akkor ajánlom figyelmedbe a Firebase-t. Ahhoz írni kell Droidra egy kliensprogramot, szóval Java tudás nem árt hozzá, de ott hatalmas a korlát.

-
Mr Dini
addikt
Szia!
ADB-n küldj az eszköznek egy broadcast intentet pl:
adb shell am broadcast -a "net.dinglisch.android.taskerm.notify" -d "Valami"A data nem is feltétlenül szükséges, viszont így tudsz plusz adatot is közölni az eszközzel.
A Taskerben pedig hozz létre egy profilt 'Intent received' feltétellel. Az Action mezőbe pedig másold be a
net.dinglisch.android.taskerm.notify-t. És a hozzá csatolt taskban jelenítsd meg az értesítésed.
-
Mr Dini
addikt
válasz
aprokaroka87
#6461
üzenetére
Azt nem vitatom hogy egy fejlesztő könnyebben megérti a mikéntjét, de Java-ból csak a nagyon alapok megértésére van szükség. Inkább a Droid API-t kell ismerni, ezért is linkeltem be minden referenciát, amit használtam a projektben. Kódolni pedig nem szükséges, hiszen ezt a Tasker elintézi.
Úgy vélem, hogy akár a nulláról is egy jó kezdés lehet ilyesmiket összedobni. Hiszen a jó dokumentációnak hála nem bonyolult összehozni pár Java alapú taskot.

-
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á!

-
Mr Dini
addikt
Szia!
Mivel az Android a proximity szenzor és az objektum távolságát egy event értékeként adja át a Taskernek, így a profilos megoldásnál nincs nagyon szebb tudtommal. Az AutoTools plugin egy szürke folt nálam, de feltételezem, hogy Ő is az eventre iratkozik fel, szóval szinte ugyanazt kapod teljesítményben vele, mint a Taskerrel... A 8-as konstans értékből feltételezem, hogy az említett plugin is ugyan azon az elven működik, szóval cm-ben kellene visszaadnia alapértelmezetten a távolságot.
-
Mr Dini
addikt
válasz
aprokaroka87
#6424
üzenetére
Nem, mert nem tartom olyan egetverő problémának. Illetve egyszerű a workaround rá, hiszen Java Functionokkel ez is állítható (lásd. a korábban linket taskom).
Egyébként érdekes módon, közvetlenül JS-ből állítva a hátteret, sokkal gyorsabb a dolog (ez szintén a korábbi taskomból van kiragadva, s átalakítva):
var files = listFiles("/storage/extSdCard/Hatterek", false).split("\n"), random = ""; //change path to fit for Your environment
while(!random.endsWith(".jpg") && !random.endsWith(".png")) {
random = files[Math.floor(Math.random() * files.length)];
};
setWallpaper(random); -
Mr Dini
addikt
Szia!
Igen, itt is elég lassú a művelet. Van, hogy 3-4 másodpercbe telik neki.
Éppen ezért így szoktam megoldani a háttércserét.
Nálam ez egy pillanat alatt lefut, s a lockscreen hátterét sem állítja. Ha viszont Nálad állítaná, akkor a task negyedik elemében a 0 paraméter helyére próbáld meg az 1-et behelyettesíteni.PS: Nagyon látványos ez a háttérváltás. Csináltam én is még anno egy taskot, ami innen sorsol egy képet, majd letölteti a rendszerrel, s berakja háttérnek. Naponta egyszer lefut, s teljes az öröm.

-
Mr Dini
addikt
válasz
aprokaroka87
#6407
üzenetére
Pontosan. Amit még hozzátennék az előbbi hozzászólásomhoz, hogy a pluginnak akkor van értelme, ha a Tasker egyáltalán nem képes a funkció ellátására. Ilyen pl. Joao AutoInput pluginja. Ehhez annyi jog kell, illetve Activity-t kell tudni indítani pl., amire a Tasker nem képes, csak ha módosítjuk az APK-t. Persze az AutoNotification is jóval a Java Functionok előtt készült, hiszen akkor még nem volt alternatíva. Nekem is abból a korszakból van meg a fizetős verzió.
Bár már nem használom... Egy jól paraméterezhető külön taskom van erre a célra.@Bozek
Alap Droid API része, hogy tudsz HTML tageket használni értesítésben (a Html osztály segítségével). Pl.:

A Textnek a kódja pedig a következő:
<strong><font color="gray">Mr Dini</font></strong> Hello World!Ilyesmire gondoltál?
-
Mr Dini
addikt
Remek kérdés! Köszönöm, hogy felhoztad!
Tervben is volt, hogy kitérek erre, de sajnos elveszett az első hozzászólás vázlatom egy böngésző bug miatt, kifelejtettem másodszorra.Az első indok, hogy ez csak egy felvezetés lenne. Ez nem túl kompikált feladat, de a segítségével szépen rá lehet érezni a dolog mikéntjére.
Illetve a plugin ilyen pitiáner dologra, mint egy értesítés, overkill. Azzal, hogy megírsz még egy plusz kiegészítő alkalmazást, ami telepítve van az eszközödre, jelentős plusz helyet foglalsz el. Pl. a TaskerPlugin és FireReceiver osztályokat minden pluginba implementálni kell (mondjuk utóbbit nem, csak Action plugin esetében). Plusz egy APK lefordulásakor a dex fájlba belekerül a Droid API, amivel forgattál. Ez is plusz 1-2 MB. Egy task pedig 5-6 kb. Ha pedig a Taskerrel natívan megoldható, minek szenvedjek pluginkereséssel/-vásárlással?
Fejlesztettem már nem egy alkalmazást és Tasker plugint Droidra (utóbbit mondjuk csak magamnak, mert érdekelt a mikéntje), így valamennyire átlátom a struktúráját fejlesztői szemszögből. A Tasker (vagy Locale stb.) egy intenttet küld a pluginodnak. Ennek hatására a rendszer a Tasker "folyamata" mellé betölt még egy szálat pluszban, a plugin adott "folyamatát". Ez lefut, a Tasker bevárja, megkapja az eredményt, majd visszatér, s futtatja tovább a taskot. Ahol pedig a bevárás és az új szál szavak szerepelnek egymás mellett, azt a helyzetet én szeretem minél messzebbről elkerülni. Aki nem így tesz, az optimalizálás szempontjából rossz fejlesztői felfogással rendelkezik. Tudom, hogy nem egetverően sok plusz idő pluginnal megoldani, de én akkor sem tennék ilyet (feltéve, ha van szebb megoldás - s én tudok róla), ha egy búlvárlap hangos felolvasásával kínoznának...
Plusz a pluginok és az App Factoryvel exportált appok nem szeretik egymást.
PS: Ez nem JS (JavaScript). De arról is tervezek majd írni később...
Ez a natúr Java nyelv "Taskeresítve", azaz a Java Functions opció. -
Mr Dini
addikt
Üdv!
Mostanában elég sokszor kapok összetettebb Taskeres kérdéseket, melyeket beépített elemekkel nem, vagy csak körülményesen lehetne megoldani. Viszont Java Function-ök, illetve a JS motor segítségével szépen és gyorsan ki lehet vitelezni sok mindent. Tulajdonképpen majdnem mindent, amire a Droid API képes, és nincs köze a GUI-hoz.
Mint már sokszor írtam, a Java Function-ökkel még jobban kiterjeszthető a Tasker végtelen tárháza, s a lehetőségek száma rengeteg. A segítségével közvetlenül (natívan) lehet megszólítani az adott rendszeren elérhető Droid API-t. Akár egy rendes alkalmazás esetében (persze néhány limitációval). Viszont azt veszem észre, hogy a felhasználók nagy részének ez egy "fekete lyuk". Szeretnék ezen változtatni, s írni pár leírást, mivel a hivatalos dokumentáció nem valami részletes...
Úgy gondolom, hogy tanítva tanulunk szóval feladatokon keresztül szeretném ezt kivitelezni. Első körben csak pár screenshotot, illetve referenciát és infókat fogok megosztani, majd egy-két hét elteltével (remélhetőleg
) megosztom az én megoldásom is. Így akit érdekel a dolog, az elől nem lövöm le a poént, aki pedig csupán kíváncsi, az beletekinthet a taskba. Viszont, nem kötelező mindent ugyanúgy kivitelezni, sőt! Az egyedi megoldásokra vagyok csak igazán kíváncsi!
Szívesen látnám viszont, hogy Ti mit alkottatok a Tasker segítségével!Android verzióból minimum 5.1 a javallott a taskjaimhoz!
--------------------------------------------------------------------------------------
Elsőként, mint afféle bevezető egy viszonylag egyszerű, és látványos témát gondoltam, ez pedig a notibár értesítés készítés. Egy egyszerű szöveges értesítést kellene létrehozni, melynek lenne Title (cím) és Text (szöveg) mezője, plusz rendelkezhet egy kicsi és egy nagy ikonnal. Vizuális típusoknak
:Érdemes átolvasni az Android Notifications, illetve a NotificationCompat.Builder referenciáját, ott A-Z-ig le van írva a dolog mikéntje.
Az igazi Tasker veteránok, akik seperc alatt összedobják a dolgot, foglalkozhatnak a következő feladattal, mégpedig a kiterjeszthető értesítésen is:
Várom a jobbnál-jobb megoldásokat!

PS: Ha valami nem megy, kérdezzetek bátran, hisz azért van a topik!
Have fun!

-
Mr Dini
addikt
válasz
aprokaroka87
#6400
üzenetére
Nekem két Lollis eszközöm van, mindkettőn működik a belső tárhelyes elérés/írás. Viszont ha a Tasker data mappájába (Android/data/net.dinglisch.android.taskerm) írsz, azt engedni fogja a SAF, nem kell hozzá semmi speciális engedély. Ezek a fájlok viszont az app törlésével eltűnnek!
-
Mr Dini
addikt
válasz
aprokaroka87
#6398
üzenetére
Attól még a belső tárhelyre nyugodtan tudsz írni. Illetve ha van root, át is tudod onnan mozgatni (shell segítségével pl.) a fájlokat.
-
Mr Dini
addikt
válasz
aprokaroka87
#6393
üzenetére
Hello,
Ez a GRANT_DOCUMENT_TREE_ACCESS a nyalókával jött be. Viszont csak a hatos Androidtól ugrik fel a kezelő automatikusan, ha az app olyan erőforráshoz akar hozzáférni, amihez nincsen joga. 5.x alatt a fejlesztőknek kell kézzel megnyitni ezt, lekérni az eredményét, majd elmenteni azt, hogy tartósan tudjon a külső SD-re írni.
Pent egy ideig próbálkozott ezzel, de aztán eldobta a Lolli támogatást, mert sok szívás lett volna vele. A 4.9u1-es verzió pl. tartalmazza ezt még, de a frissebbek nem.
Anno próbálkoztam Java Functionnel pótolni a dolgot. Ez lett belőle. A fájlkezelőt rendben felhozza, de mivel nem GUI szálon fut a task, Activity-t csak így tudok indítani. Viszont az eredményét pont ezért nem tudom elkapni. Nem teszteltem, szóval lehet, hogy működik, de kicsi esélyt látok rá...

Én inkább kértem engedélyt a fejlesztőtől, aztán patchelem a forrást, hogy lolli kompatibilis legyen.

-
Mr Dini
addikt
válasz
dzsordzs69
#6391
üzenetére
Ohh, akkor bocs! Azt hittem csak Nugát alatt vette ki Pent ezt az opciót. Mindenesetre ez a task pótolja a hiányzó funkciót a 7.0-nál régebbi droidokon.

Picit utánaolvastam a dolgoknak, s azért nem lett deprecated a funkció, mert még lehet használni Nugáton is, csak engedélyt kell adni az appnak az értesítésekre. Ezért kicsit átalakítottam a taskot ([link]). A Copyright-ot fenntartom magamnak az Activity indításért nem UI, háttér szálról.

Műkődik a task, köszi, bár egy árva mukkot sem értek belőle.
Elsőre talán pilótavizsgásnak tűnhet, ha még nem fejlesztettél Droidra, de itt minden le van írva az osztályról. A Java Function-ökkel pedig meg tudod szólítani közvetlenül az Android API-t, azaz olyan dolgokat is tudsz csinálni vele, amit a Tasker natívan nem, de a rendszer támogat.

Ja és cimkébe beleírtam a lehetőségeket, hogy érthetőbb legyen. A 0 a csendes, az 1 a rezgő, s a kettes a normál, ha jól emlékszem.
-
Mr Dini
addikt
válasz
dzsordzs69
#6384
üzenetére
Ez a taskom nem működik Nálad Nugáton? Pedig a dokumentáció nem jelöli elavultnak a fügvényt...
Sajnos most nem vagyok 7.x közelben, de majd feltétlenül ránézek, hogy megoldható-e a dolog máshogy!
-
Mr Dini
addikt
válasz
coelophysiis
#6352
üzenetére
Szia!
Elég kényes téma ez jelenleg. Annyira, hogy a stabil Droid verziókban még hivatalos API sincs hozzá (csak rejtett/system app priv.)... Az Android O-ban tervezik majd megoldani a hívásfogadást rendesen.
Érdekes, hogy az MD tud ilyet, míg a Tasker nem az adott romon. Hanyas Droid?
Illetve próbáld ki ezt a taskot, ebben a jóöreg headsetes workaroundot használtam ki kétféleképpen. Shellparancsos input keyevent-tel, illetve ugyanennek a Java API-os változatával. Aztán vagy megy, vagy nem...

-
Mr Dini
addikt
válasz
aprokaroka87
#6329
üzenetére
Mindkét általam linkelt oldalon valamilyen formában ott van, hogy Droid 4.0-tól nem elérhető bármilyen app számára.

-
Mr Dini
addikt
válasz
aprokaroka87
#6327
üzenetére
Szia!
Már egy jó ideje nem lehetséges 3rd party appok számára a biztonság miatt ez a funkció [link]:
Not for use by third-party applications.
Régebbi Droidokon Java funkciókkal így lehetett váltani.
Esetleg root segítségével ha meg tudod adni az engedélyt neki, akkor működhet.
A hozzáférési pont elnevezés pedig eléggé ... a csőröm. Az ilyeneket jobb nem lefordítani.

-
Mr Dini
addikt
válasz
slice14
#6321
üzenetére
A második és a harmadik kód szinte ugyanaz. Csak picit gyorsabb. Használhatod a második megoldást is, vagy akár az elsőt, ez csak egy javaslat volt a részemről.
Nem feltétlenül kell az egész kódot refaktorolni (újraírni), de ha új dolgokat adsz a kódhoz, amik nem függnek szorosan az eddigi koncepciótól, azt meg lehet oldani így is.
700+ sor
. Azt hogy szerkeszted? Nekem össz-vissz 8 soros az egész, bár én csak a háromnapi szöveges előrejelzést, az aktuális hőmérsékletet, a mai max/min értéket, illetve a helyet és az országot nyerem ki. Mondjuk ennél több adat nem is nagyon férne ki a statusbar értesítésre... -
Mr Dini
addikt
válasz
Dottore
#6320
üzenetére
Ez pont egy olyan összetettségű feladat, amit érdemes script segítségével elvégezni. De nem várom el, hogy megértsd az optimalizált kódom.

Most, hogy leírtad pontosan, mire lenne szükséged, összedobtam még egy kódot. Itt a vázlatom hozzá, "emberi" nyelven:
var ignoredApps = [ "net.dinglisch.android.taskerm", "com.google.android.youtube" ];
var raw = shell("pm list packages -f", false, 2).split(".apk=");
raw.forEach(function(element, index) {
if(index != 0 && ignoredApps.indexOf(element.split("\n")[0]) <= 0) {
shell("am force-stop " + element.split("\n")[0], true, 5);
}});
flashLong("Appok sikeresen bezárva!");Ez is teljes mértékben használható, viszont egy kicsi gépiesítve formázással sokkal gyorsabb eredményt kaphatunk. Ezért szoktam minden kódot átalakítani ilyenre:
var ignoredApps = [ "net.dinglisch.android.taskerm", "com.google.android.youtube" ];
var _0xd34e=["\x2E\x61\x70\x6B\x3D","\x73\x70\x6C\x69\x74","\x70\x6D\x20\x6C\x69\x73\x74\x20\x70\x61\x63\x6B\x61\x67\x65\x73\x20\x2D\x66","\x0A","\x69\x6E\x64\x65\x78\x4F\x66","\x61\x6D\x20\x66\x6F\x72\x63\x65\x2D\x73\x74\x6F\x70\x20","\x66\x6F\x72\x45\x61\x63\x68"];var raw=shell(_0xd34e[2],!1,2)[_0xd34e[1]](_0xd34e[0]);raw[_0xd34e[6]](function(_0x66fdx2,_0x66fdx3){0!= _0x66fdx3&& ignoredApps[_0xd34e[4]](_0x66fdx2[_0xd34e[1]](_0xd34e[3])[0])<= 0&& shell(_0xd34e[5]+ _0x66fdx2[_0xd34e[1]](_0xd34e[3])[0],!0,5)})
flashLong("Appok sikeresen bezárva!");Utóbbinak teljesen ugyanazok a bemeneti és kimeneti változói.
Root kell hozzá a force-stop miatt!
-
Mr Dini
addikt
válasz
aprokaroka87
#6315
üzenetére
Igen, ugyanazon az elven működik, csak a Java API-os megoldás több lehetőséggel bír, illetve nem feltétlen kell root az alkalmazáson belüli használatához.
-
Mr Dini
addikt
válasz
Dottore
#6316
üzenetére
Valahogy így gondoltad?
var ignoredApps = [ "net.dinglisch.android.taskerm", "com.google.android.youtube" ];
var _0x5e66=["\x2E\x61\x70\x6B\x3D","\x73\x70\x6C\x69\x74","\x70\x6D\x20\x6C\x69\x73\x74\x20\x70\x61\x63\x6B\x61\x67\x65\x73\x20\x2D\x66","\x0A","\x69\x6E\x64\x65\x78\x4F\x66","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68"];var raw=shell(_0x5e66[2],!1,2)[_0x5e66[1]](_0x5e66[0]),appList=[];raw[_0x5e66[6]](function(_0x491fx3,_0x491fx4){0!= _0x491fx4&& ignoredApps[_0x5e66[4]](_0x491fx3[_0x5e66[1]](_0x5e66[3])[0])<= 0&& appList[_0x5e66[5]](_0x491fx3[_0x5e66[1]](_0x5e66[3])[0])});
alert(appList.toString());Az ignoredApps tömbbe tudod felvenni azokat a csomagneveket, amikre nincsen szükséged a listázásban (whitelist). A végeredmény pedig az appList tömbbe kerül, amit szemléltetésképp ki is iratok egy alerttel.
-
Mr Dini
addikt
válasz
Dottore
#6304
üzenetére
Bocs, közben találtam rá mégis megoldást. [link]
Azt tudtam, hogy a Droid 21-es API-ban a Gúgli kivette a recent appok lekérdezésének lehetőségét 3rd party csomagok számára, viszont arról nem tudtam, hogy csináltak alternatívát. Bár ezt is (a linkelt service-t) csak system app tudja igénybe venni, vagy esetleg ADB-n lehet megpróbálni egy android.permission.PACKAGE_USAGE_STATS jog megadást az alkalmazásod számára. Egyéb esetekben max. root mellett tudsz vele valamit kezdeni. Viszont, ha működik az ADB-s megoldás, akkor sem lesz elég hozzá a Tasker, ehhez külön plugin/Tasker App Factoryvel gyártott csomag kell már a plusz jogosultság (permission) miatt.
-
Mr Dini
addikt
válasz
slice14
#6308
üzenetére
Igen, valahogy így gondoltam.

Viszont, JS-ben (és Javaban) az a "trend", hogy változónevet csak spec. esetekben kezdünk nagy betűkkel. S a második szótól kezdve nagybetűzünk csak. Így pl. a Unixtime helyett a unixTime a "szebb". Persze ez nem sokat változtat a kódon, csupán könnyebben értelmezhetővé teszi a más programozók számára.
Illetve a Unixtime változó felesleges, mert inicializálod, adsz neki értéket, majd rögtön át is másolod a price1 változóba. Csak feleslegesen fogyasztja a memóriát. Mehet a global érték egyből a price1-be.
A harmadik pedig, hogy nagyon hasznos a rengeteg beépített Tasker változó, de amikor lekérdezed az értékét, akkor a Droid meghívja a Tasker adott kódját, az pedig feldolgozza, majd visszaadja a pillanatnyi értéket. Ez is idő. Viszont a JS kód lefutásra elküldésekor a Tasker az összes global(xyz) helyére behelyettesíti az aktuális értéket, s csak ezek után fut le maga a JS. Szóval ha már adott a Javascript, ajánlom figyelmedbe a Date osztályt, amivel szépen le lehet kérni az időt Unix időben.
Egyébként itt az én megoldásom (Figyelj arra, hogy mindegyik kódban MS-ben kértem le a UNIX időt, s a UnixUpdateTime nevű változót olvasom be!):
var interval = 20; // in minutes
if(new Date().getTime() - new Date(parseInt(global('UnixUpdateTime'))).getTime() >= interval * 60 * 1000) {
setLocal('cantaskrun', true);
} else {
setLocal('cantaskrun', false);
}S ha feltételezzük, hogy a UnixUpdateTime lehet üres, vagy valami csoda folytán nem számsorozat, akkor itt egy kicsit biztonságosabb megoldás:
var interval = 20; // in minutes
function getDateFromTaskerVariable(varName) {
if(parseInt(global(varName))) {
return parseInt(global(varName));
}
else {
return 0;
}
}
if((new Date().getTime() - getDateFromTaskerVariable("UnixUpdateTime")) >= interval * 60 * 1000) {
setLocal('cantaskrun', true);
} else {
setLocal('cantaskrun', false);
}És itt az utóbbi kódom rendesen optimalizálva (ezt érdemes élesben használni, a többit csak azért másoltam be, hogy értelmezhető legyen):
var interval = 20; // in minutes
var _0x9479=["\x67\x65\x74\x54\x69\x6D\x65","\x55\x6E\x69\x78\x55\x70\x64\x61\x74\x65\x54\x69\x6D\x65","\x63\x61\x6E\x74\x61\x73\x6B\x72\x75\x6E"];function getDateFromTaskerVariable(_0xb822x2){return parseInt(global(_0xb822x2))?parseInt(global(_0xb822x2)):0}( new Date)[_0x9479[0]]()- getDateFromTaskerVariable(_0x9479[1])>= 60* interval* 1e3?setLocal(_0x9479[2],!0):setLocal(_0x9479[2],!1)A logika az egészben annyi, hogy a Taskernek igyekeztem minél kevesebb számolási feladatot adni (konkrétwn nullát), mivel ezekben a Javascript sokkal gyorsabb és pontosabb. Így a végső eredmény a cantaskrun lokális változóba kerül. Amennyiben letelt az intervallumban megadott idő a két lefutás közt, úgy true lesz az értéke, egyéb esetben pedig false. Azaz a JS után közvetlenül egy Stop Task [HA %cantaskrun eq false] megoldja a dolgot.

Használd egészséggel, s ha nem megy valami, vagy nem világos, akkor kérdezz bátran!

PS: Mivel az összes projektem gyalulásra került egy szerencsétlen user error kapcsán, így elveszett az összes segítő szkriptem. Így a kódot teljes mértékben kézzel írtam, ezáltal tesztelve is lett.

Üdv!
-
Mr Dini
addikt
-
Mr Dini
addikt
válasz
aprokaroka87
#6282
üzenetére
A busyboxos megoldást, ha már fent van. Gyorsabb, s Tasker barátabb.
(#6284) aprokaroka87
Akkor leírom a mikéntjét is!
Igazándiból rettentő egyszerű... Run shellbe:busybox cp <fájlamitmásolniakarsz> <hova>
Pl.:
busybox cp /storage/emulated/0/helloWorld.txt /storage/extSdCard/
A Use root természetesen legyen bepipálva, s a BB legyen telepítve, plusz képezze az útvonala részét a PATH környezeti változónak! (Google a barátod, ha nem így lenne - bár szinte az összes BB telepítő megoldja ezt)
-
Mr Dini
addikt
válasz
aprokaroka87
#6280
üzenetére
Akkor marad a Busybox beli cp binárissal másolás root shellből, vagy esetleg a data partíció átmeneti rw csatolása (ezze vigyázni kell, hogy hosszútávon ne maradjon így):
mount -o rw,remount /data
-
Mr Dini
addikt
Hanyas Tasker ez?
Nekem így néz ki a parancs paraméterezési lapja [kép].
Vagy alternatív megoldásnak megpróbálhatod a System->Send Intentet. Az Action részbe kerüljön ez:
com.spotify.mobile.android.ui.widget.PLAY
Bár utóbbit nem próbáltam.
PS: ha nem jön be, Java függvényekkel meg lehet oldani még a zeneindítást. Majd ránézek!
-
Mr Dini
addikt
válasz
aprokaroka87
#6276
üzenetére
...is a directory.
Szerintem ez a lényeg. Vagy tényleg rossz az elérési útvonal, vagy a jogosultság kavar be. Esetleg próbáld meg ideiglenesen átmásolni a task elején az adatbázist a belső tárhelyre, s onnan olvasd be!
-
Mr Dini
addikt
válasz
aprokaroka87
#6272
üzenetére
Ha megfelel, hogy tömbbe kerül az összes elérési útvonal, akkor itt a task.
Az adatbázis elérési utat ne felejtsd el lecserélni!
-
Mr Dini
addikt
Nekem jelenleg nincsen feltelepítve a Spotify app, így nem tudom konkrétan kipróbálni, de elvileg, ha kiválasztod a Taskeres Play elemnél a Spotify-t, mint 'App'-ot, akkor azt fogja indítani.
Anno intenttel sikerült így indítani, s emlékeim szerint a Tasker ezen funkciója sem csinál mást.
-
Mr Dini
addikt
válasz
aprokaroka87
#6268
üzenetére
Tipp: Ha ilyen konkrét kérdéssel kapcsolatban kérsz segítséget, nem árt megosztani a kérdéses db fájlt, különben ha értene is itt valaki az SQL-hez, sem tudna konkrét segítséget adni.

Egyébként történetesen Android/Kodi fejlesztés kapcsán napi szinten találkoztam sqllite3-mal, így gondoltam, hogy a Taskeres Lyrics projektemnek csinálok cache gyanánt egy ilyen adatbázist, mivel elég gyors. Azóta is remekül teszi a dolgát, megy rendesen. Szóval a Tasker rendesen támogatja a dolgot.

-
Mr Dini
addikt
Szia!
Mivel elég összetett a program, nem lesz kis feladat, de én is támogatom az ötletszekciót, esetleg letölthető taskokkal, illetve leírásokkal (ezek mehetnek külön logoszféra topikba pl., majd csak be lennének linkelve (ott jobban kifejthető)).
Illetve szerintem lehetne egy kicsi interaktivítást is belevinni a dologba, azaz nem csak kész megoldásokat, hanem megoldandó példákat is lehetne beilleszteni valahogy (mondjuk témák/nehézségi szint alapján). Ha nem tartjátok rossz ötletnek, még gondolkozom egzakt példákon...
-
Mr Dini
addikt
válasz
Mr Dini
#6230
üzenetére
Ezer bocs, most teszteltem, s úgy látszik a második HTTP Getnél elírtam a linket.
Ez a helyes:
http://kodi:kodi@192.168.0.50:8888/jsonrpc?request=%7B%22jsonrpc%22%3A%222.0%22%2C%22method%22%3A%22Player.PlayPause%22%2C%22params%22%3A%7B%22playerid%22%3A1%2C%22play%22%3Afalse%7D%2C%22id%22%3A1%7D
-
Mr Dini
addikt
Picit átírtam benne a linket (enkódoltá tettem), a Javascriptet csinosítottam (mert gondolom bemásoláskor elveszett a formátuma), illetve a Yatse-t lecseréltem szintén JSONRPC-re.
-
Mr Dini
addikt
Igen, a Phone ringingbe kell beletenni a task elejére.
A (basic auth) login szintakszist jól gondolod, viszont az első mező végére nem kell '/' jel, csak a Path-hoz.
Illetve a JS kódot nem a Javascript, hanem a Code->Javascriptlet részbe kell beilleszteni.
Majd a task alján található Yatse felé intentet továbbító elemednek adj meg egy if-et, melynek feltétele legyen a %IsPlaying eq true. Így ez csak akkor fog lefutni, ha a lejátszás éppen aktív.
Egyébként a szüneteléshez végül melyik megoldást választottad? A Yatse-s vonalat, vagy a sima JSONRPC hívást?
-
Mr Dini
addikt
válasz
aprokaroka87
#6218
üzenetére
User error. Gondoltam frissítek, de mivel moddolt verzió volt fent, törölnöm kellett a jelenlegi csomagot. Gondoltam, hogy van backupom hetente, így nagy gond nem lehet. De úgy néz ki, hogy a mentésért felelős taskom nem futott le fél éve, szóval elbuktam kb minden komolyabb projektem...

A bétáról meg kénytelen voltam downgradelni vissza, mert a transzparens ikonnak is lett körvonala, ami nem szerencsés.
@HREH
Gratulálok itt is a kinevezésedhez! Nagyon jól jártunk Veled!
Jó munkát! -
Mr Dini
addikt
Hatalmas +1 az broadcastelkapásos módszerre!

(#6214) Fall-N
Egyszerű a megoldás szerintem. Le kell kérned a http://<kodi ip>:8080/jsonrpc?request={%22jsonrpc%22:%20%222.0%22,%22method%22:%20%22Player.GetActivePlayers%22,%22id%22:%201} linket egy HTTP Get elemben. Majd kihasználva azt, hogy egy JSONról van szó, JavaScripttel dolgozzuk fel az eredményt pl. így:
jsonObject = JSON.parse(global('%HTTPD'));
if(jsonObject.result.length == 0) {
result = false;
}
else {
result = true;
}
setGlobal('%IsPlaying', result);Fontos, hogy legyen egy HTTP Get a Javascriptlet előtt, különben nem töltődik fel a HTTPD változó!
Ja és a %IsPlaying váltózód értéke 'true' lesz, ha megy a lejátszás, s false, ha nem.
Nem próbáltam Taskerben, mert a bétának köszönhetően buktam az eddigi összes taskom, de mennie kell. Itt egy fiddle, ami bizonyítja.
Illetve a Kodi beállítások nézzenek ki így, hogy lehessen JSONRPC-n keresztül hívogatni a rendszert:
Have fun!

-
Mr Dini
addikt
A reddites leírást csak akkor kell követni, ha az a verziót, s nem a parancsból utasítást szeretnéd használni. Root nélkül csak az az egy megoldás van, de így talán egyszerűbb a parancsot futtatni, azért javasoltam azt is.
Egyébként a Tasker ír valami hibát a parancs futtatásakor? Samun most teszteltem, itt működik. Ja és ugye a settings első 's' betűje nem maradt le a parancsból?
-
Mr Dini
addikt
Előkerestem Neked, konkrétan erre a hozzászólásomra céloztam. Van benne egy reddites link, ahol le van írva részletesen a task használata. De App Factory kell hozzá.
Vagy root mellett alternatív megoldás 'Run shell'-ből futtatni a settings put system button_key_light 0 parancsot, illetve szintén nulla helyett 1-gyel lehet engedélyezni a világítást.
Megj.: A 'Use root' opció legyen bepipálva!
-
Mr Dini
addikt
Szerintem nem magát az eszközt kellene utasítgatni, hanem magát a rendszert kellene erőltetni, hogy mit tegyen a gombok megvilágításával. Sajnos most nincsen nálam hardveres gombokkal rendelkező eszköz, de esetleg ez segíthet, a korábban általam linkelt Secure Settings taskkal lefuttatva:
system|button_key_light|int|0
Ugyanez a végén egyessel a bekapcsoláshoz. Root nem feltétlen szükséges hozzá, de akkor adb-n kell neki megadni a WRITE_SECURE_SETTINGS jogot. Vagy root mellett shellben a settings binárissal is lehet módosítani az értékét.
@Bozek
Ezt szomorúan hallom. Szabad érdeklődni, hogy mi okból döntöttél így?
-
Mr Dini
addikt
válasz
aprokaroka87
#6154
üzenetére
Az
adb devicesparancsból kihámozott eszközazonosítót kell oda írnod. -
Mr Dini
addikt
válasz
aprokaroka87
#6151
üzenetére
Az ADB helpben ott a megoldás.

-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <specific device> - directs command to the device or emulator with the given
serial number or qualifier. Overrides ANDROID_SERIAL
environment variable. -
Mr Dini
addikt
válasz
aprokaroka87
#6149
üzenetére
Nincs Telenoros kártyám, tehát belépni sem tudok az oldalra, nemhogy kész taskot gyártani.
Így a nemes feladat Rád marad.
A lényeget leírtuk, de ha valami nem megy, írd be Gúgliba a Post kulcsszót, vagy azt, ami nem világos. Biztos vagyok benne, hogy tucatnyi leírás van róla a neten. -
Mr Dini
addikt
válasz
aprokaroka87
#6147
üzenetére
Bocs, a Javascript nem minden esetben jelent megoldást, mivel sajnos korlátozva lett a Lolli Androidban eléggé az xhr része, így például sütit nem tud kérés mellé küldeni...

Nekem nincs meg az AutoTools plugin, mert én nem láttam sok értelmét eddig (mert mindent szinte meg tudtam oldani Taskerrel, ami kellett). De hátha valaki más tud Neked abban segíteni, hogy ott hogy lehet kivitelezni a post kéréseket.
-
Mr Dini
addikt
válasz
aprokaroka87
#6145
üzenetére
Persze, Http Post a szerver felé a belépési adatokkal. Böngésző developer konzoljából (PC-n) ki tudod lesni, hogy pontosan milyen paramétereket kell közölnöd.
Viszont a komolyabb Post kérések lebonyolításához a Tasker nem nyújt elég paraméterezhetőséget, így vagy Java-t, vagy JS-t, vagy pedig egy külső plugint kell segítségül hívnod (én a RESTTaskot (vagy valami hasonló neve van) ismerem, de talán az AutoTools is tud ilyet).
Ha a login megvan, ki kell nyerned a sütit a szerver válaszából, majd ezzel bonyolíthatod is le a többi lekérést (míg a süti le nem jár).
-
Mr Dini
addikt
válasz
aprokaroka87
#6135
üzenetére
aprokaroka87.
Persze, de macerás Taskeren belül, mivel ezekhez intentek 'figyelésére' kell regisztrálni a Taskert. Szóval jobban jársz azzal a megoldással, hogy egy külön task figyeli ezeket az állapotokat, s azokat változókban tárolod.
-
Mr Dini
addikt
Igen, hasonló megoldást írtam én is a robot topikban, de a HTTP Get-es megoldás is rém egyszerű, csak be kell másolnod a wget utáni linket a Server
ort mezőbe.Egyébként most nézem, hogy elírtam a parancsot, ugyanis ahhoz, hogy a linket a wget egy attribútumnak vegye, ahhoz az egész URL-t idézőjelek közé kellett volna tennem, illetve a menet közben előforduló idézőjeleket \-sel escapelni kellett volna.
-
Mr Dini
addikt
válasz
aprokaroka87
#6097
üzenetére
Szia!
Nem sajnos. Mivel tudtommal az Android nem rendelkezik ilyen notify külsővel, így csak custom layouttal lehetne megoldani. De ahhoz a Tasker APKnak kellene tartalmaznia az XMLt.

-
Mr Dini
addikt
Hi!
Csináltam Neked egy komplett projektet példaképp. Sajnos ezt a tetszetős hold ikont nem sikerült meglelnem, így megcsináltam, hogy a Night Notify task első elemeként be lehet tallózni bármilyen ikont kézzel.
Egyébként a projekt három komponensből áll, két taskból és egy profilból. A Night Notify task a magja a dolognak, ő hozza létre az értesítést, majd jeleníti meg. És van egy profil, mely azt figyeli (egy intent segítségével), hogy meg lett-e érintve az értesítés. Ha ez bekövetkezik, akkor lefut a Disable night mode task.
Fontos, hogy legyen engedélyezve a Tasker, különben hiába tapizza az ember, nem fog semmit sem reagálni.

Plugin nem kell hozzá, csak a Tasker, ugyanis Java functionöket használtam. Android 5.1-en tesztelve!
Ja és igyekeztem mindent cimkézni, hogy érthetőbb legyen (angolul).
Night_Mode_Example.prj.xml --> https://drive.google.com/open?id=0B9YIHdkp3xAlVDV3VE5zYXY2THc
Have fun!

-
Mr Dini
addikt
válasz
aprokaroka87
#6089
üzenetére
Szia!
Le lehet kérni ezeket (de nem az Általad linkelt módon; az felhoz egy Activityt, hogy törölnöd kell pár alkalmazást, mert nincs elég hely az appodnak), viszont a külső SD kártyára nincsen API.
Egyébként csináltam Neked egy taskot, innen letöltheted. Ebben benne van a két Android API-s megoldás, az elsővel a Data, a másodikkal pedig a külső 'resoure' tárolásra titulált adatokat tudod kinyerni. Viszont a külső SD-t, illetve pl. az OTG-s eszközömet nem tudtam meghívni, mert erre nincs API. Így egy workaroundot kellett kifundálnom ismét. Ehhez viszont a task alján lévő elemeket engedélyezés előtt csekkolni kell, hogy stimmel-e az elérési út. Egyébként az a megoldás bárminek vissza tudja adni a szabad/összes területét.
Android API 9 minimum szükséges a taskhoz, és minden értéket byteban ad vissza, így szükség szerint Neked kell konvertálnod!
Have fun!

-
Mr Dini
addikt
Mint írtam, én az android egyik "színét" töltöm be, mint drawable, s ezt adom át a Buildernek.
Viszont erre gondolom a plugin nem képes, esetleg próbáld meg ezzel. Viszont arra kíváncsi lennék, hogy lehet-e olyan képet mini ikonnak beállítani, ami 'külsős', tehát nem tartalmazza az APK csomagfájl (a res mappa). Tudtommal sajnos ez sem lehetséges... Ha érdekel, írd le mire lenne szükséged pontosan, s megcsinálom Taskerrel valamikor...
-
Mr Dini
addikt
Szia!
Ugyan megvan az app, de amióta Tasker natívan is meg lehet oldani minden ilyesmit Java APIkkal, azóta azt használom.
Ettől függetlenül ez egy Android 'sajátosság', hogy a notifynek hiába van LargeIconja, egy SmallIcon is mindenképpen kell mellé. Különben nem jelenik meg az értesítés, s a NotificationBuilder eldobja. Szóval az a mini ikon mindenképp kötelező...
Mivel engem is idegesített a dolog, rákerestem, de nem találtam sehol megoldást erre... De nem hagytam annyiban, s a magam szakállára addig próbalkoztam, míg megtaláltam a (fél)megoldást, mégpedig, hogy a Notify SmallIconnak az android.color.transparent-et kell beállítani, így transzparens lesz az ikonja. Meglepetésemre így eltűnt a karika is, s semmi nyoma sincs magán az értesítési savon sem a végeredménynek. Egyedül ha van mögötte értesítés néz ki picit furcsán (mivel üresség van a helyén), de ezt is sikerült megoldani a priorítás állításával.
Az ötletért a Copyrightot fenntartom magamnak.

Az AutoNotify nem tudom, hogy enged-e transzparens ikont, meg priorítást állítani, de ha máshogy nem, hát megoldható a nélkül is!

-
Mr Dini
addikt
válasz
aprokaroka87
#6056
üzenetére
Hát igen, úgy nehéz pingelni...

-
Mr Dini
addikt
válasz
aprokaroka87
#6048
üzenetére
Bocs, dupla lett!
(#6042) hetn
Szia!
Ne haragudj a késleltetett reakciómért, szerettem volna válaszolni hamarabb is, de sajnos nem jött össze a kóros időhiány miatt...
Az jó jel, akkor írd meg a linkelt fórumon a problémád, s reméljük, hogy Pent megoldja hamarosan. De igyekezz, mert ha nem jelzel mostanában, akkor kiadja az új verziót, s a bugfix nem fog bekerülni, csak pár hónap múlva a Taskerbe.
2. Van egy logja a Tasker toggle alkalmazásnak (a belső tárhelyen egy mappában találod), ott meg tudod tekinteni az esetlegesen előforduló hibákat. Bár gyanítom, hogy a megoldás nincs kibékülve az Android 7-es főverziójával.

-
Mr Dini
addikt
válasz
aprokaroka87
#6048
üzenetére
Szia!
Nálam megy mindenféle hókusz-pókusz nélkül is, rendben visszakapom az értéket. Esetleg próbáld meg a Timeout értéket növelni picit.
Vagy itt egy Tasker JS kód, hátha ez megy, ha a másik nem:
var output = shell('ping -c 2 google.com', false, 10);
alert(output); -
Mr Dini
addikt
válasz
aprokaroka87
#6052
üzenetére
Nem kell hozzá rootnak lenni, mivel nem csak shellparancsból, hanem Java API-n keresztül is el lehet érni a $Settings-et. Erre jó a korábban linkelt projekt, vagy az autotools.

-
Mr Dini
addikt
-
Mr Dini
addikt
válasz
kaciokos
#6014
üzenetére
Szia!
Találtam egy rejtett Settings opciót, ami Nexuson tesztelve szépen tudta kapcsolgatni az értesítő LED-et.
Csináltam Neked egy taskot, amit ha futtatsz, akkor a jelenlegi állapottól függően vagy kikapcsolja, vagy bekapcsolja a LED-et.
Ha viszont egy konkrét állapotba szeretnéd tenni a ledet, akkor Perform taskkal futtasd le más taskból a dolgot, de a %par1-nek adj meg egy értéket. Ez az érték legyen 0, ha mindenképp ki szeretnéd kapcsolni, 1 pedig, ha engedélyezni kívánod.
Notify_LED_toggle.tsk.xml --> https://drive.google.com/open?id=0B9YIHdkp3xAlZkp6eFJKOF9veWc
Mivel nekem patchelt a Taskerem, így kis eséllyel elképzelhető, hogy a Te készüléked hibát fog dobni a futtatáskor, bár teszteltem direkt más eszközön, s ott is működni látszott...

-
Mr Dini
addikt
Megpróbáltam foglalkozni a dologgal, de mint kiderült ez egy eléggé készülékfüggő jelenség. A cella nevét (Cid) és a hozza tartozó Lac értéket ki lehet szinte minden 4.2 és frissebb Droidon olvasni az API-val, de a részletes infókat pl. az én Samsungjaim (J1, J3 és S4) nem tudták kiolvasni. A PC-n lévő N7 és N6 emulátorban viszont mindkét megoldás működött, illetve a Nexus 5-ön és a jóöreg HTC One-on is.
Akinek nem megy, az próbálja meg lecserélni a taskban a getAllCellInfo
{List} () függvényt getNeighboringCellInfo
{List} ()-ra, hátha azzal menni fog.Sajnos 'univerzális' megoldás nincs erre. Ahány gyártó, annyiféle megoldás...
-
Mr Dini
addikt
válasz
aprokaroka87
#6005
üzenetére
Ok, holnap megpróbálok faragni még rajta. Ez csak egy gyorsan magamnak összedobott verzió.

Azt hiszem, sejtem mi okozhatja a problémát!
-
Mr Dini
addikt
válasz
aprokaroka87
#6003
üzenetére
Nekem is pontosan ugyanezt a hibát produkálja a task, amennyiben repülő üzemmódban van telefon (vagy ha nincs szolgáltatás). Egyéb esetben működik.
A 4.2 elméletileg már tudja futtatni.
-
Mr Dini
addikt
Ok, feltoltam Drivera mindkét próbálkozásom, ami szóba került.
Java_Cell_Infos.tsk.xml --> https://drive.google.com/open?id=0B9YIHdkp3xAlY2RITDA0akJubEE
Java_Cell_Loc.tsk.xml --> https://drive.google.com/open?id=0B9YIHdkp3xAlZUpqQjJuZHFOSncAz első visszaadja az összes torony adatait, a második pedig az aktuális közeli torony két location paraméterét tölti Tasker változókba.
-
Mr Dini
addikt
Én sem hiszem, hogy azzal van összefüggésben, hanem inkább azzal, hogy éppen a telefon milyen állapotban van. Semmi köze a szenzoroknak az eszközöd telefon részéhez, viszont ha valamelyik (pl. nekem egy másik task miatt pont kellett az Accelerometer szenzor mindig) szenzort figyeli a Tasker, akkor biztosan nem fog deep-sleepbe kerülni a telefon. Így jobban merül picivel, de ha Waze indításhoz kötöd a beállítást pl., akkor feleslegesen nem fog mindig ébren maradni a telefon.
-
Mr Dini
addikt
válasz
aprokaroka87
#5994
üzenetére
Nem hiszem, hogy segítene. Az csak kiírja a Cellainfókat, a Loc és Cid paramétereket nem közli, s ugyanúgy nem tud a Tasker mit kezdeni a paranccsal, ha le van zárva a képernyő sajnos....
Egyébként a mai kísérletezgetésem közben összehoztam ugyanezt Java-n keresztül, s ahhoz root sem kell. Ha érdekel bedobom a taskot...

-
Mr Dini
addikt
Szia!
Bevallom, hogy a Taskernek ezen funkcióját még soha nem volt alkalmam tesztelni, mivel a mobilnetes/GPS pozíció sokkal pontosabb értékeket ad.
De teszteltem Nexus5-ön Android 5.1 és 6.1.1 alatt is, mindkettőn hibátlanul működött mindenféle beavatkozás és New API bekapcsolás nélkül is. Bár lehet azért, mert az Accelerometer miatt a Tasker soha nem teszi deep sleepbe a telefont (Yes, and keep device awake-n van).
Egyébként, ha a deep sleep a gond, egy végtelen ciklussal el tudod érni egyszerűen, hogy ne 'aludjon be' a telefonod.
Viszont azt tapasztaltam, hogy ha kiiratom egy flashsel ezeket a változókat:
%CELLID %CELLSRV %CELLSIG
, akkor ezt kapom vissza:
%CELLID unknown -1
Próbáltam a Cell near profilhoz hozzárendelni a taskot, de így sem kaptam vissza rendes értékeket, csak a középső érték változott 'unknown'-ról 'service'-re... A Cell Near ennek ellenére tökéletesen szuperál...
Mondjuk ezt megoldottam pár Java API hívással, amit bármikor tudok futtatni.Egyébként ha a ciklus/szenzor miatti ébrentartás nem működne, átküldöm a Java-s taskom, s azt tudod csinálni, hogy míg megy a Waze, a Tasker percenként futtatja, s ha egyezik a cella, akkor végrehajt egy másik taskot. Sokkal többet nem fog fogyasztani, mint a GMail pl., hacsak percenként egyszer fut le, s feltételezem, hogy percenként nem fogsz egy sokkal messzebbi cellába kerülni... Persze így több cellát is megadhatsz.

PS: A workaround a GPS-t élesztené fel egy pillanatra, ami már - hála a Droid API változásoknak - nem lehetséges alkalmazásból (csak Settings nyúlkálással, de erre a Tasker 'gyárilag' nem képes).
-
Mr Dini
addikt
Igen, de azok a másodpercek összeadódnak. S ha kereken egy másodperccel számolunk (az egyszerűség kedvéért), akkor 645 lefutás után kb. 645 plusz másodperdcet kell elkönyvelni. Nekem nem mindegy, hogy mennyi ideig marad ébren a telefon egy-egy taszk miatt, illetve mennyi ideig fut, ugyanis elég sok taskom van (gondolom ezzel nem vagyok egyedül), amik akár párhuzamosan is futhatnak...
Illetve sokat lehet tanulni/fejlődni a dologgal. Az ember egyszer ráérez, aztán a határ a csillagos ég!

-
Mr Dini
addikt
Tudok róla, volt is korábban szó erről itt a topikban is.
Csak nem ismertem az előzményeket, s meglepődtem, hogy van erre natív Java API az Androidban, s nem csak a settings binárison keresztül elérhető a program.
Egyébként nem rosszak ezek a pluginek, de 'in-production' környezetben nehéz őket használni. Jobb szeretem a dolgokat Taskerrel 'natívan' megoldani, hogy ne kelljen egy csomó plusz appot feltenni ezekért a funkciókért. Hiszen Joao nem csinál mást, mint a Taskerből kimaradt Droidos Java függvényeket teszi elérhetővé egy egyszerű GUI-n keresztül. Viszont a funkciók 66%-át kb. meg lehet oldani Taskerrel is, Java függvények meghívásával (kivéve az Activityket), ami sokkal gyorsabb, mint a külső pluginek...
Meg a múltkor találtam szintén egy ígéretes projektet, amit feltéve tapasztaltam, hogy körülbelül hat darab plugint kellene telepítenem a futtatáshoz. Kíváncsiságból újraalkottam ezeket a részeket csupán Taskerrel, JS-sel, Javaval és Shellel és meglepő eredményeket kaptam. Az eredeti 2.38 ms alatt futott le az én módosításom pedig 0.83 ms alatt...

-
Mr Dini
addikt
Üdv!
A minap, s a mai nap túrtam a Tasker reddit oldalát, hogy manapság milyen érdekes projekteket csinálnak a külföldi urak, s ráakadtam erre.
Ezzel a projekttel root nélkül lehet pl. GPS-t kapcsolgatni, illetve ezernyi más dolgot lehet kiolvasni/módosítani a rendszerben.Még nem volt alkalmam tesztelni, de ígéretes dolognak tűnik, végre nem kell Taskert patchelnem hozzá.
A nemrég reinkarnálódott 'ipari kémünknek' is hasznos lehet ez az infó, mert ha a robot képes launch appre egyedi dataval, akkor ott is működhet ez a módszer.

-
Mr Dini
addikt
válasz
aprokaroka87
#5979
üzenetére
Szerintem nem rossz dolog, rövid infók kiíratására tökéletes. Ha pedig csicsázni szeretnéd, a Toastnak meg lehet adni egyedi kinézetet (kódból), szóval annyira nem is lemaradott. Csak a fejlesztők többsége nem foglalkozik ezekkel, így kevésszer látom. Pedig nagyon szép dolgokat is lehet vele létrehozni...
Én egyedül csak azt sajnálom, hogy GUI szálon (Activity), vagy a fő szálon (az is GUI thread) lehet csak Toastot csinálni, s a Tasker a Java Functions-t Serviceként futtatja. Szóval maximum a már említett Looperrel lehetne egy nem GUI szálból Toastot létrehozni. Meg is próbáltam annó összehozni egy ilyen taskot, mivel idegesített, hogy ilyen mostohán van kezelve a toast kezelés, s nem tudok neki pl. egyedi pozíciót megadni. Ami pedig azért zavar, mert ugye a billentyűzet ott nem érinthető, ahol a toast van...

Sikerült is összehozni a dolgot, de 'befagy' a Looper és a Tasker, s a végtelenségig megy a task, a megadott 6 mp helyett. A Toast ugyan eltűnik, de a taskjaim nem futnak le, csak Tasker kilövés/reboot után. Írtam ezzel kapcsolatban Pentnek, de nem reagált...
Egyébként itt letölthető a félkész taskom.
(#5980) HREH
Igen, amit mondtál, abban van igazság, mert valóban van két Toast konstans, az egyik a SHORT, a másik a LONG. A dev reference egy kicsit félrevezető ([link]), mert itt is ezt említik csak. Ugyanakkor a durationnál a fordító egy integert vár (erről árulkodik az int duration = kezdetű sor), azaz bármilyen pozitív, egész számot írhatsz oda a Toast.LENGTH_SHORT helyére.
Új hozzászólás Aktív témák
- Tudástár Tasker - AZ Android alkalmazás
- HP EliteBook 850 G8 Fémházas Tartós Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD
- Gamer PC - INTEL I7-14700KF / RTX4080 SUPER 16GB / 32GB DDR5 / 3TB SSD / 1000W 80+GOLD / 360 AIO
- Dell Optiplex 3050 Sff i5-7G /8 gb ddr4/NVME foglalt/ 250gb ssd
- AMD Radeon RX 7600 8GB OC HIBÁTLAN!!
- Hibátlan 2+ Év Garancia! GIGABYTE GeForce RTX 4060 EAGLE OC 8GB
- GYÖNYÖRŰ iPhone 12 Mini 128GB Blue-1 ÉV GARANCIA -Kártyafüggetlen, MS4209, 94% Akksi
- PC konfig /Ryzen 7 9800X3D, 32GB RAM, 1TB SSD/ akciós áron eladó! BeszámítOK!
- Gamer PC-Számítógép! Csere-Beszámítás! R5 5500 / 16GB DDR4 / RX 6600 8GB / 512 GB SSD
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- Eladó BONTATLAN Samsung Galaxy S24+ 12/256GB Lila / 12 hó jótállás
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


. A formátumot pedig úgy konvertálod a végén ha szükséges megjeleníteni, ahogy szeretnéd. Ha jól rémlik van rá egy függvény.

A lelkesedésem a témában nem lanyhult, csupán krónikus időhiányban szenvedtem.
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


. Azt hogy szerkeszted? Nekem össz-vissz 8 soros az egész, bár én csak a háromnapi szöveges előrejelzést, az aktuális hőmérsékletet, a mai max/min értéket, illetve a helyet és az országot nyerem ki. Mondjuk ennél több adat nem is nagyon férne ki a statusbar értesítésre...

ort mezőbe.

