Új hozzászólás Aktív témák
-
bartatamas
senior tag
válasz #79335424 #2148 üzenetére
Szia,
Az Elixir-ben van egy logika amely nézi az előző X másodpercben milyen határok között mozgott a szenzor által mért érték, és ha attól eltér Y százalékkal akkor detektál változást.
Ilyen "magas" szintű esemény nincs az E-Robot-ban ami átlagot számolna. A jelenlegi megoldással max annyit tudsz megtenni hogy a "delta"-t bekapcsolod, hogy csak a változásokat kapd meg. És a "length" kimenő változót használod hogy ha nagyobb mint egy megadott érték (tehát ha az előző értékhez képest nagyot változott) akkor csináljon valamit.
-
bartatamas
senior tag
válasz #79335424 #2150 üzenetére
Megpróbálom úgy elmagyarázni hogy örökre megértsd
A legtöbb szenzor esemény (ilyen a magnetometer is) egy három dimenziós irányvektor, melynek koordinátái x, y, z. Tehát egy szenzor esemény azt is megmutatja hogy milyen irányból érzékel (x, y, z) és mekkora erősségű mágneses teret (length = gyök(x*x + y*y + z*z)). Minket most az irány nem érdekel, csak az erősség, ezért maradjunk a vektor hosszánál.
Ha nem állítasz be semmit, akkor a parancs minden szenzor eseményre kiváltódik, tegyük fel ezekkel a hossz értékekkel: 31, 30, 32, 29, 58, 57
Ha bekapcsolod hogy "delta" akkor ez csak annyit jelent hogy nem a hossz értékeket küldi el, hanem csak a változásokat: -1 (30 - 31), 2 (32 - 30), -3, 29, -1
Ebből látszik hogy a "delta" elég jó arra hogy kiugró változást érzékelj. Mert ha feltételnek azt állítod be hogy a kapott hossz érték > 20 akkor már tudtad is detektálni a mágneses térerősség 29-ről 58-ra ugrását.
A delta csak ennyit jelent. Nézzük az intervallumot. Ennek szerintem akkor van csak értelme ha NEM deltát használunk. Tehát ha mondjuk azt mondod hogy a 40-nél nagyobb, kiugró mágneses mező érdekel, akkor beállítód az intervallum alsó határának 40-et, felső határ nem kell.
Ez azt jelenti, hogy az esemény csak akkor fog kiváltódni ha a hossz érték ebben a [40, végtelen] intervallumban van. Tehát a példánál maradva kétszer: 58, 57
Persze valószínűleg nem akarod hogy 58-ra és rögtön 57-re is mondjuk jelezzen a parancs, ezért érdemes bekapcsolni hogy csak az intervalluba történő belépéskor, vagyis 58-kor váltódjon ki, 57-kor már nem, mert akkor már bent vagyunk az intervallumban. Legközelebb akkor fog kiváltódni ha kimegy az intervallumból (40 alá csökken) majd vissza.
Az hogy mekkora az alsó határ amit mérni akarsz tapasztalat kérdése. Egyszer meg kell nézni milyen értéket mutat és úgy beállítani. A Nyomkövetés oldalon látszódnak ezek az értékek.
Szóval szerintem Neked úgy kell beállítani, hogy:
- delta kikapcsolva
- csak intervallumba belépéskor
- alsó határ valamilyen érték
- felső határ nincsÉs jöjjenek a változók. Most már értsd meg!
Mikor az esemény kiválasztod, az esemény alatt kékkel ki van írva hogy:
"Kimenő változók: x, y, z, length, timestamp"
Ugyanez a szöveg már ki van írva a Parancsok képernyőn is az esemény alján. Azért hogy mindig tudd hogy milyen változókat használhatsz. Ez egyszerűen azt jelenti hogy amikor az esemény kiváltódik, akkor már be vannak állítva ezek a változók, a nevükkel tudsz rájuk hivatkozni. Ez így érthető?
Tehát ha meg akarod tudni milyen nagyságú a vektor (length) akkor például a következőt tudod csinálni:
Toast üzenet megjelenítése, üzenet: Változó értéke("length")
Tehát a "length" változó már létezik, benne a vektor hosszával. Nem neked kell megcsinálni, az esemény megcsinálja. Ezek olyan paraméterek, nevesített értékek (nem tudom hogy hívjam hogy világos legyen) amit készen kapsz a parancs futása során. Mint a "number" a bejövő hívásnál a hívó telefonszáma.
Feltöltöttem a sample-007-01-es példát amely egy ilyen kezdeti fémdetektorként működik.
-
bartatamas
senior tag
válasz #79335424 #2154 üzenetére
> Pont a lényeg hiányzik belőle, vagyis a" >20" feltétel.
Ami a példában van alsó határhoz írva, az felel meg ennek. Mivel akkor váltódik ki az esemény ha bekerül a [20, végtelen] tartományba, vagyis >20.
> Delta nélkül egy alsó küszöbérték, deltával pedig az eltérés az előzőhöz képest? Nem tűnik logikusnak, mert nem lehetne vele definiálni az összes lehetőséget.
Ez csak egy segítség, hogy a szerintem leggyakoribbnak vélt eseteket meg lehessen gyorsan oldani. Vagy azt nézheted hogy az abszolút érték mekkora, vagy hogy a változás. Hogy egyszerre kellene mindkettőre feltétel, az télyleg szükséges?
> Pl. azt, ha a delta értéket csak az egyik tengelyre szeretném alkalmazni.
Ha ilyesmi kell az fejlesztés, vagy Te oldod meg változókkal és számítgatással, de az nem olyan hatékony.
A koncepció az volt hogy általában az emberek nem akarnak az irányokkal foglalkozni, csak a szenzorok által mért nagysággal, mert ne legyen lényeges hogy tartják a telefont. De persze te nem vagy átlagember
> A +/- értékek itt irány, vagy mennyiségi (jelerősség, erőzavar) eltérést jelentenek?
Az x,y,z-ben a +/- az egyértelműen irány. Ha deltát használsz akkor nyílván növekedés/csökkenés.
A hossz/nagyság nem lehet negatív.> Ha jól értem, amit írtál, akkor, ha nem definiálom tengelyenként az eltérést, akkor az Elixírben, bármelyik tengelyre vonatkozó változást lehetne alapul venni a Robot delta értékéhez?
Meg lehet oldani kis fejlesztéssel.
-
bartatamas
senior tag
válasz #79335424 #2156 üzenetére
Az eseményt szerintem azért érdemes bonyolítani mert bár meg lehet oldani azt is amit írsz újabb vagy bonyolultabb esemény nélkül, de rosszabb hatásfokkal. Úgy értem jobban fog merülni.
Az Elixir abban különbözik hogy ott egy magasabb szintű logika van implementálva ami pár másodpercig átlagot számol és utána az ettől való százalékos eltérést vizsgálja.
Ha a Robotban implementálnám ezt az algoritmust, annak is lenne két paramétere. Mekkora intervallumot átlagoljon és hány százalékos változást tekintsen eltérésnek. Nagyon hasonló a mostani eseményhez két különbséggel:
- az eltérést nem az előző 1, hanem az előző X érték átlagához nézi
- az eltérést nem csak abszolút értékben (pl 8) hanem százalékos eltérésben is tudta vizsgálni (pl 10%)
Ebből látszik hogy szerintem az Elixir algoritmus természetes kiterjesztése a jelenlegi E-Robot funkcióknak. Ezért gondolom úgy hogy ki kellene egészíteni az eseményt és sokkal jobban használható lenne.
Az irányokról. A magnetométer szenzor tudja detektálni a mező nagyságát és irányát is. Gondold el, így tudja merre van a mágneses északi pólus. Próbáld ki Elixírben, látszik higgy a koordináták előjelet váltanak ha megfelelően forgatod a telefont. A koordináta rendszer valós, az egyes koordináták + és - iránya azt mutatja hogy a vektor azon komponense merre mutat, mint ahogy matekból tanultuk.
Egy kis irodalom, nem egyszerű téma:
http://developer.android.com/reference/android/hardware/SensorEvent.html
Az erő nagyságát, vagyis a vektor hosszát én számolom így: négyzetgyök(x*x + y*y + z*z), vagyis az nem lehet negatív.
A változás mértékét sem a szenzor adja, azt is én számolom. Lehetne az irány változását is számolni (v2 - v1), de én csak erő nagyságának változását számolom (length2 - length1)
Amúgy a letöltött példa parancs nem működött nálad jól?
-
bartatamas
senior tag
válasz #79335424 #2158 üzenetére
Az elsőre pont azt mondom hogy Elixírben ez az érték változik, mert nem egy abszolút szám, hanem a korábbi átlagtól való százalékos eltérés. De gondolom arra gondolsz hogy a hossz értéket is ki lehetne írni.
A másodikra pedig azt akarom mondani hogy a legutóbbi verzióba tettem bele egy általános Rendszer / Broadband üzenet eseményt, amivel elvileg bármilyen broadcast eseményt el lehet kapni.
Egyébként ez utóbbit miattad tettem bele, azt hittem meg tudom vele oldani az alapértelmezett alkalmazás felüldefiniálós problémát. De sajnos kiderült nem, mert azok nem broadcast üzenetek, hanem activity (képernyő) megnyitások.
-
-
bartatamas
senior tag
Ehhez mit szóltok? Egyre kevésbé lesz használható az Android advanced dolgokra:
http://www.hwsw.hu/hirek/53065/google-android-lollipop-selinux-biztonsag-bootloader-rootolas-jog.html?utm_source=hwsw_rss&utm_medium=feed&utm_campaign=Feed:+HWSW
-
bartatamas
senior tag
válasz zeon.hu #2211 üzenetére
Hogy érted hogy kezelni? Úgy látom a mac cím elérhető, de csak a kapcsolódott hálózat esetén.
A konfigurált hálózatok és látható hálózatok (scan) esetén nem.Jelenleg a helymeghatározás az éppen látható hálózatokra épül, ott viszont nincs mac address. Tehát max azt a "Hálózati állapot megváltozott" esemény "csatlakoztatva" állapotát lehetne kiegészíteni egy mac address szűrővel.
-
bartatamas
senior tag
Szia,
Tudni kell hogy mivel az E-Robot háttérfolyamatként működik, ezért "wake lock" nélkül egy parancs végrehajtása bármikor leállhat bármennyi időre. A parancsok futtatása ezért "wake lock"-ot használ hogy rendben le tudjon futni.
Az első E-Robot verziók esetén még nem volt wake lock és én rendszeresen találkoztam olyan felhasználói visszajelzésekkel hogy miért van az hogy pl lefut egy esemény de csak 3 perc múlva mondja ki a TTS hogy mondjuk levél érkezett, vagy hogy volt egy 10 másodperces várakozás de csak fél perc múlva folytatta a feladatot. Ez mind a wake lock hiánya miatt volt. Amióta beépítettem a wake lock-ot azóta nem fordult elő ilyen probléma.
-
bartatamas
senior tag
válasz #79335424 #2228 üzenetére
Örülök. Már akár tehetnék is ki új verziót.
Sajnos azóta páran jelezték hogy a root-ot igénylő funkciók lollipop alatt nem működnek. Egyelőre várok hogy tesztelhessem (még nem jött frissítésem) és javíthassam. Én azon kevesek közé tartozok akik nem örülnek az új verzióknak, mindig kezdhetem előről a fejlesztést
-
bartatamas
senior tag
válasz #79335424 #2233 üzenetére
Szia,
Tudod hogy nekem ez a rész homály. 3g/4g detektálásra nem lehet használni a Hálózat / Hálózat típus és altípus értékeket? Ha a hálózat típus mobil akkor nézd meg mi az altípus nálad 3g és 4g esetén.
Ha a hívandó szám mondjuk egy "number" változóban van, akkor ki tudod egészíteni az Összefűzés operátorral:
Összefűzés("00361", Változó(number))
-
bartatamas
senior tag
válasz B@ldrick #2277 üzenetére
Sziasztok,
Eddig a következő dolgokat sikerült javítanom/módosítanom 5.0-val kapcsolatban:
- Mobil adat kapcsolás/lekérdezés
- GPS kapcsolás/lekérdezés
- Alkalmazás (csoport) indulás/leállás
- Alkalmazás (csoport) fókusz megkapás/elvesztésHa valaki ki szeretné próbálni release előtt írjon és küldöm a dev verziót: bartadev@gmail.com
Ha valaki más problémát is érzékelt kérem itt jelezze (az összes műveletet nem próbálom végig, csak amit valaki jelez)Üdv,
Tamás -
bartatamas
senior tag
válasz Siriusb #2284 üzenetére
Szia,
Játszottam kicsit az értesítés prioritásával. Lollipop alatt ugyanis a lock képernyőre is kikerült az ilyen célra értelmetlen értesítés. Hogy onnan eltűnjön minimumra tettem, így viszont úgy látszik az ikon is eltűnt. Ennek persze biztos sokan örülnek. Lehet beállíthatóvá kellene tennem a prioritást is.
-
bartatamas
senior tag
válasz #79335424 #2289 üzenetére
Sziasztok,
A fókuszba kerülés sajnos az a funkció ami teljesen megszűnt Lollipop alatt:
http://developer.android.com/reference/android/app/ActivityManager.html#getRecentTasks(int, int)
Eddig ezt szépen le lehetett kérdezni, most már nem ad vissza semmit, biztonsági okokra hivatkozva.
Ennek kiváltására eddig egy új, úgynevezett UsageStats megoldást javasolnak fórumokon:
http://developer.android.com/reference/android/app/usage/UsageStatsManager.html
Ezt építettem be, lekérem az elmúlt 1 napi használati statisztikát, ebben van egy getLastTimeUsed() hívás, amely az alkalmazás utolsó használatának időpontja. Én is ezt használom. Lehet itt van valami anomália.
Balikaa, küldenél nekem levelet ide: bartadev@gmail.com
Küldenék olyan verziót amelyben van egy kis extra logolás. Ha a fenti megoldás nem működik úgy ahogy kell, akkor attól félek a fókuszba kerülés működést elvesztettük.
-
bartatamas
senior tag
Szerintem másról beszéltek. Fall-N: kikapcsoltad az "Előtér szolgáltatás" üzemmódot? Gondolom ezért áll le. És ha jól sejtem azért kapcsoltad ki hogy ne legyen státuszsor ikon. zeon.hu pedig arra gondol hogy az új verzióban az értesítés prioritását csökkentettem, amelynek hatására nem látszódik az ikon, de ez nem okoz instabilitást.
-
bartatamas
senior tag
válasz vadkörte #2312 üzenetére
Szia,
Nem próbáltam, de valami ilyesmi úton indulnék el. Linux alatt az rsync-el szokás ilyen backup funkciót megvalósítani. Alapból sajnos nincs Android alatt. Van a Play-ben egy rsync backup for Android alkalmazás, ez ráadásul pluginként is tud működni. Én ezzel próbálkoznék.
Új hozzászólás Aktív témák
- Új Lenovo Ideapad Flex 5 x360 Érintős Hajtogatós Laptop Tab 15,6 -30% Bivaly AMD Ryzen 5 5500U 8/512
- LENOVO LEGION SLIM 5, Intel I5 12. gen. RTX4050 6GB DDR6, 16" WUXGA, 3év garancia
- Eladó Hohem iSteady Pro4 Gopro Gimbal
- Sound Blaster Audigy 2 fehér / bézs előlapi panelt keresek (SB0250)
- Samsung Galaxy S24+ 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen