Hirdetés
-
Robotkart irányított a majom a kínai Neuralink agyi chipjével
it A mindezt lehetővé tévő Neucybert a Neuralink kínai riválisa, a Beijing Xinzhida Neurotechnology fejlesztette ki.
-
Ülésezik a hardveregylet
ph Az irodai készülékek és monitorok társaságát egy ház, egy egér és egy DAC egészíti ki.
-
VR játék lesz az Alien: Rogue Incursion
gp Az év végén érkező program PC-re, Meta Quest 3-ra és PlayStation VR2-re érkezik a tervek szerint.
Új hozzászólás Aktív témák
-
pittbaba
aktív tag
Sziasztok!
Ötleteket keresek annak a megoldására, hogy hogyan oldanátok meg GPS koordináták alapján, hogy beazonosítható legyen, a felhasználó melyik tömegközlekedési eszközön utazik Budapesten, vagy melyik megállóban áll.
További kellemest mindenkinek!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz thyrpacia #347 üzenetére
Azt a mindenit!
Nagyon ritkán szoktam kérdéseimmel zavarni, inkább kifórumozom a legelvetemültebb elképzelésemet is, de hogy a BKV-nak vagy ilyen adatbázisa, azt álmomban sem mertem volna gondolni.
Ezer hála és köszönet!PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Szeretnék az alkalmazásomhoz belső adatbázist csatolni, amit nem az internetről ér el, hanem a készülékről. Mivel ez nem az appal együtt töltődik le és tárolódik, nem tudom megoldani, hogy a programban frissíthető legyen. Keretem megoldásokat, de nem igazán sikerült megértenem.
Milyen megoldást ajánlatok?
Gombnyomásra töltse le az sd kártyára az adatbázis fájlt, és az alapján írjam felül a régebbi adatbázist sorról sorra? Vagy van jó megoldás arra, hogy közvetlenül a fájlból nyissam meg az adatbázist?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
BKV-s app készítésben vagyok, az általuk kiadott GTFS formátumból szedem ki az adatokat.
Két gyors kérdésem lenne, háhta tudtok segíteni:Hogyan érdemes, milyen matek alapján kerekíteni a GPS koordinátákat?A megálló nevét akarom kinyerni, ahol éppen áll a user, és jó lenne ha ilyen 10méteres körzetben már működne, nem csak ha a pontos GTFS-ből kinyert gps koordinátánál áll.
Ha felszáll az utas egy megállóban eléggé leszűkíthető a járatok száma amire éppen felszállt, amikor elkezd haladni a járművel, milyen elgondolás alapján lehetne szűkíteni hogy melyik járatra szállt?
Pl.: a 2-es 24-es villamos A Közvágóhídtól a Haller utcáig egy úton megy, ezért lehetetlen megmondani melyiken utazik éppen, viszont a Haller után már eldönthető. A GTFS adatbázis nyújt e valamilyen könnyű lehetőséget, kiszámolható e valami módon, vagy gyűjtenem kell az érintett megállókat és azok alapján feltételrendszert kidolgozni?
Kellemes napot kívánok mindenkinek!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Azt írja nekem az eclipse hogy elavult a startManagingCursor metódus, interneten több helyen a Loadermanagerre hivatkoznak. Mi ez, hogy működik, mivel jobb? Van e valami jól átlátható példa?
A startManagingCursor-al működik az adatbázis lekérdezés, megkapom a kurzorokat, szóval elvileg ezzel a módszerrel is jó, de azt olvastam összeomlást okozhat, néha ha háttérből jön elő az alkalmazásom, van is, hogy erre hivatkozva fatal erroral kilép: Trying to requery an already closed cursor.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz pittbaba #400 üzenetére
Az egyik kérdésemre megtaláltam a választ, hiányzott a stopManagingCursor(cursor);
Azt még mindig nem tudom pontosan, mi az újabb technika a Kurzor feldolgozására. Elvileg lehet valahogy a háttérben futtatni ezeket a kéréseket, ennyit tudtam az angolból értelmezni, de a példák alapján sem tudtam megoldani. Tudtok segíteni?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Igen! Az egész Loader framework-öt nem értem pontosan hogyan és mire kell használni.
Több dologra is megoldás lehet, az elavult StartManagingCursor-t is felváltaná, ráadásul most pont olyan programot próbálok írni, ami a GTFS txt-ből megcsinálja a SQLite adazbázist, ez sokezer sor, ami miatt az alkalmazás úgy gondolja fölöslegesen vár, és figyelmeztet, megkérdez, akarom e leállítani a futást. Elvileg megoldható, hogy ezek a háttérben fussanak.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szép estét mindenkinek!
Egy String változóban vannak nekem az adatbázis inserthez a tartalmak, vesszővel elválasztva.
234234,"mihály utca",21.123123,56.56456456,,,,,2,
Hogy oldanátok meg, hogy a Stringben ahol két vessző van egymás mellett, azt ,null,-ra cseréljem a stringben?
Az adatbázis insert hibát ír ha semmilyen nulla értéket nem adok meg az üres mezők helyére.(,null, vagy ,'',..)GTFS txt-ket szeretnék SQLite adatbázissá konvertálni, minden áll a lábán, már csak ennyi hiányzik a programból, de nem jövök rá milyen reguláris kifejezéssel lehetne ezt cserélni.
A sima megoldás: str.replace(",,",",null,") nem jó, csak az elsőt cserélni, replaceAll eredménye pedig:
234234,"mihály utca",21.123123,56.56456456,null,,null,,2,
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszi!
Azóta már még több problémám keletkezett.
Elsőre a megoldás :
line = line.replaceAll(",(?=,)", ",NULL");Ekkor az lett a baj, hogy a vesszők közötti értékek közül is a stringeknek kell ' ' vagy " " így könyebbé vált a helyzetem:
line.replaceAll(",","','");
Ekkor jött a meglepetés, miszerint vannak olyan tartalmak ahol egy cellának az értéke:
y,x,"Kis,Pál utca",a,bEbből ez lesz:
'y','x','"Kis','Pál utca"','a','b'Így a Kis, Pál utca stringet kettévágtam, csúszik az adat feltöltése az adatbázissal, több tartalom lesz mint cella stb..
Ez sem jó...Egy olyan reg.expr kellene nekem ami megoldja a fenti problémámat:
Ha vesszőt lát, tegyen a két oldalára aposztrófot, kivéve ha úgy lát vesszőt, hogy az két " " közötti szöveget választ el, akkor ne csináljon a vesszővel semmit.
Tipp? Biztos megoldható...PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
-
pittbaba
aktív tag
Sziasztok!
Lehet lesz jobb tippetek, de úgy fest, nem fogom tudni megoldani az offline BKV menetrendet. Sajnos 150Mb-os adatbázis file-al nem bír el már az SQLite, egy lekérés olyan 10 perc... Pedig hiba nincs, az adatok megjönnek, egyszerűen a stop_times tábla annyira nagy, hogy megáll az élet Ötlet,trükk lekérdezésre android alatt? Hátha..
A feladat: GPS koordináták alapján megállapítani melyik megállóban van a user ( ez megy hibátlanul már ), majd kiíratni milyen járatok haladnak át ezen a megállón.
Sajnos a mocskos GTFS adatbázisban 3 táblát kell ehhez összejoinolni, a stops, a stop_times, és a trips táblákat, nem találtam rövidebb utat. Lehetséges hogy ha nem JOIN-al csinálom, hanem 3 lekéréssel egymás után, akkor gyorsabb lesz? Az eredményeket GROUP-oltam (GROUP BY stop_times.stop_id), hátha gyorsabb lesz, de így sem.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz WonderCSabo #433 üzenetére
Jogos, köszönöm!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
JSON formátumú weblap tartalmát szeretném AsyncTask segítségével lekérni, majd az AsyncTaskból valahogy a fő szálamba visszaadni a kapott eredményt (String).
Hogy lehet ezt kivitelezni?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Igen, ezt vágom is, egy kicsit bonyolultabban de mégis egyszerűbben akartam megoldani. A meghívó activitin belül nem tudom visszakapni az értéket, csak az onPostExecute-n belül, ezért kicsit nehézkesebb a feldolgozás, hogy innen-onnan hívom meg, de nem ott tudom feldolgozni az eredményt.
Így is jó egyébként, csak paraméterben akkor el kell küldenem, hogy éppen hogyan dolgozza fel az Async taskon belül az eredményt.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
ÓÓ hogy ezt te követted el? Akkor először is és
Ismerősek voltak a szavaid, ezek alapján haladtam én is, de nem láttam, hogy kitértél e arra, hogy hogy kapja meg a hívó az async task által lekért eredményeket.Nagyon jó a cikk, a teljes ködös semmitnemértek ebből verzióból a nagyjából átlátom részig sikerült fejlesztenem magam miután átrágtam a cikket, köszi, nagy segítség.
Igen, ezen gondolkodtam én is, hogy mivel ez háttér folyamat, közben pont az a lényeg benne, hogy az activity meg közben azt csinálja ami a dolga, ne erre várjon, így az asyncen belül érdemes feldolgozni az eredményeket ha jól értem.
Én úgy gondoltam, hogy paraméterben kap az async egy stringet, hogy hogyan dolgozza fel a kapott eredményt, és hova írjam ki éppen. Gondolom nem érdemes minden alkalomhoz külön teljes Async osztályt létrehozni.(?)
Sok ilyen hasznos cikket még!
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszönöm a részletes magyarázatot, egy előre elég lesz nekem az onPostExecute ban feldolgozni az adatokat, ez a trigger dolog viszont érdekes lehet! Most éppen a cikked alapján megcsinálom a kezelést elforgatásra, back gombra stb, hogy jól be legyen betonozva, ezek valóban kötelező feladatok itt.
A cikkeket alig várom, én biztos rámegyek megint, ha jönnek új infók.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Most lehet hülyeséget kérdezek, de a 3. cikkedben az async taskban csinálsz egy metódust, ami a bezárásokkor a timeconsumingtask-nak null értéket adsz. Azt nem értem, hogy az async taskból hogy fér hozzá a hívó activityben létrehozott példányhoz? Nekem olyan hibám van, hogy nincs ilyen változó deklarálva. Mit rontok el?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szia!
Igen, ma fogok ott tartani gyakorlatban is, hogy a szebb megoldásokat is lépésről lépésre beépítem a programomba. Lesznek nehezítések még a cikked példájához képest, biztos, hogy fogok még kérdezni a témában. Saját adatbázisból próbálom lekérni a kiválasztott BKV járat legközelebb induló járatait. Mivel a legtöbb infót az offline sqlite db-ből szedi, viszont az érzékenyebb nagyobb lekéréseket már a netről, ezért kell nekem főleg az Async task, mivel az adatok egy részét (vonal neve, megállók) már kiírom kiválasztás után rögtön, de lehet az internetről szerzett adatok csak később érkeznek meg és íródnak ki. Szerintem itt jogos az AsyncTask használata. Viszont mi van, ha éppen nem sikerül neki számomra megfelelő adattal visszatérni, mert mondjuk pont nem kapaszkodott fel a wifi? Azt is kezelnem kellene. Illetve, ha elmúlt az adott időpont (elment a következő járat ) akkor újra csináljon egy lekérést, már a frissebb indulási időpontokkal visszatérve, valahogy rá kell vegyem, hogy a háttérben emberi időközönként frissítsen.
A konkrét kérdésemre is megkaptam a választ, annyi volt a gond, amire számítottam is, osztálynévvel ki kellett egészítenem a változónevet, így már látja a változót, nem ír hibát! (van egy temérdek hiányosságom Javaból, PHP-ban dolgozom, nehéz átállni és néha csak úgy nem akar jönni a megoldás)
A cikk kapcsán felmerült egy kérdés: Az érték megőrzése ha bezárult az alkalmazás dolog írtad, hogy a példádban már lejárt. Mikor várható leírás ennek az újabb verziójáról? Fragmentekre kell rákeresnem? Ott lesz a megoldás?
A téma áthelyezése szerintem úgy lenne a legetikusabb mindenki számára, ha innen a diskurzus részeit néha bemásolod a cikked alá is. Mivel valóban ez az egyetlen magyar fórum itt van, hagy legyen meg itt is az érdeklődők számára, hasznos lesz ez egy év múlva, ha már többen mennek neki az Android home fejlesztésnek.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Én itt élek Pesten évek óta, de nem itt nőttem fel, így ez a funkció lesz, igazából pont erre építem az alap szerkezetet. Jó lenne, valami irányzék is, hogy pontosan helyileg oda tudjon menni a user a megállóba, de az később, a kiadott adatbázis amúgy sem a legpontosabb eddigi tapasztalat szerint, de majd.. ez még új dolog
A kérdésem erre a részre vonatkozott:
Ezen a ponton átalakítottuk a belső TimeConsumingTask osztályt static típusúvá, vagyis egyetlen timeConsumingTask létezhet. Hogyan tudnánk ezt megőrizni, miközben az UI-szálon futó alkalmazásunk újraindul? Az Alkalmazkodjunk az új környezethez! Felületi változások c. cikkben már beszéltünk az onRetainNonConfigurationInstance() metódusról, mellyel egy értéket meg tudunk őrizni a program újraindulása alatt. ((Megjegyzendő, hogy ezt a módszert a Honeycomb rendszertől kezdve érvénytelenítették. Az új módszer azonban a Fragment-ek beható ismeretét igényli, ezzel később (ha a gépünket Jelly Bean-re frissítettük) részletesen foglalkozunk.))Én is a frissítés gombra gondoltam megoldásnak, csak nem tudom érteni fogja e a user magától, hogy ha nincs indulási időpont, akkor neki a frissítés gombot kell nyomkodnia, de kitalálom.
Galaxy S2-n meg mini-n tesztelek, még én sem foglalkoztam a tablet méretekkel..
És még valami: Én külön fájlba vettem az Async osztályomat, nem engedi static-ra rakni, hogy ne fusson több egyszerre, azt a hívó activity async startoló metódusában csekkoljam indítás előtt?
[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Rendben, nagyon lassan haladok, mert közben rendes melót is csinálom, de odaérek lassan, és akkor kiderülnek a dolgok számomra
A tesztelésben biztos sokan benne lesznek, sok a fanatikus szerencsére ..Csak érdekességképpen kérdezem, nem annyira fontos a program szempontjából, de miért lehet, hogy a getContentLength() -1-el tér vissza? Egy ideig jól adta vissza nekem a várt csomagméretet, de mióta JSON bemenetet kap, nem html-t, valamiért ezt kapom vissza. Mi okozhatja?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz pittbaba #537 üzenetére
Találtam egy kérdéses részt az utolsó előtti részben, nekem kifagyás lett az eredménye, de lehet csak az én logikámban kell máshogy.
StarTask metódusnál az indítás előtti feltételed:
private void startTask(String route_id ,String stop_id){
try {
if (async_task == null || async_task.returnedResult !=null) {
indulhat_a_task... }Ebben az esetben akkor is indul a háttér task, ha már lefutott, de már megvan az eredmény. Szerintem csak akkor kell futtatni, ha a task nem fut(ott), vagy ha nincs eredmény. Így a hibajelenség is megszűnt.
if (async_task == null || async_task.returnedResult ==null) {
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Na még valami:
ListView-et akarok kitölteni az async task onpostexecute metódusában, de a setListAdapter metódust elvileg nincs definiálva. Több helyen is így láttam a példákat, nálam miért nem működik?
Így néz ki a dolog egyébként:JSONObject jsonobj = new JSONObject(result);
next_starts = jsonobj.getJSONArray("next_starts");
for(int i = 0; i < next_starts.length(); i++){
JSONObject c = next_starts.getJSONObject(i);
String id = c.getString("departure_time");
//Log.v("TAG","INDULÁS:"+id);
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = next_starts.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("start_time", "Codename: " + e.getString("departure_time"));
//map.put("cc", "Country Code: " + e.getString("countrycode"));
mylist.add(map);
}
ListAdapter adapter = new SimpleAdapter(callerActivity, mylist , R.layout.start_times_listview,
new String[] { "start_time"},
new int[] { R.id.start_times});
setListAdapter(adapter);
Log.v("TAG","JSON FELDOLGOZVA");PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Újabb kérdésem:
Async taskból feltöltöm a listview-ot, kijelző elforgatásával viszont üres lesz a ListView.
Ezt is a getLastNonConfigurationInstance(); segítségével kellene megoldanom?Nem szeretném az Async taskot csak az elforgatás miatt újra indítani, váratni a usert a lekéréssel, stb, ezért lenne jó, ha destroy után valahogy vissza tudnám adni az értékét.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Szeretnék egy ajtónyitót csinálni az egyik kihasznált Androidos telómból. A programozás résznél egyelőre nem tartok, de ahogy néztem, eléggé könnyen megoldható, viszont az elektronikai résszel bajban vagyok. Találtam több netről rendelhető usb-s relay boardokat, de attól félek, arra rádugom a telefonomat, és nem fog töltődni USB-n keresztül, ami kellemetlen. Az usb kábel szétbarmolásával meg lehetne oldani a tápellátást, de inkább titeket kérdeznélek meg előbb, van e valamilyen bevált kütyü erre, ami esetleg tölti is a telefont USB-n keresztül miközben rajta lóg?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Esetleg valaki tudja hogy lehet Usb debugging módot appal kapcsolgatni, csekkolni? Mindenhol a google csak a menüből való kapcsolgatást hozza, nem lelem, hogy lehetne ezt appal..
Vettem egy IOIO-t ahhoz kellene néha csekkolni van e kapcsolat.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszönöm, ez érdekesnek tűnik, meglátom mire jutok vele. Hogy kerestél rá? Órák óta nézem a google-t de mindenhol csak a mocsok menürendszert hozta Kinek van ideje menüben vacakolni ha appot is lehet rá?
Remélem sikerül, írom azonnal.Remélem nem gáz, de nyitottam egy témát az ioio-nak, akit érdekel esetleg a dolog, első lépéseket leírtam, meg az első végigszenvedett hibákat, hogy másnak ne kelljen:
[link]PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Nekem root-al tökéletes lenne, mert csak annak a telefonnak kellene tudnia ezt, amelyik folyamatosan az IOIO-n lóg egy dobozban Több helyen láttam már hogy GPS-t és 3G-t is lehet ki be kapcsolni pl anti stolen progiknál, ráadásul érdekes módon én most fel tettem egy programot, amivel root nélkül is tudom kapcsolgatni az usb debug módot, nem értem, hogyan. Nem kérte a jogot, még is kapcsolgat. ( Nem, mégsem, megnéztem, és csak illúzió volt, nem dolgozik a gomb )
[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
-
pittbaba
aktív tag
Sziasztok!
Bejövő hívást hogy lehet "kinyomni"? Szuperül kezeli a bejövő hívást, szépen kinyerem a hívó telefonszámát megcsinálom amit szeretnék, de nem tudom lezárni a bejövő hívást sehogy sem, google meg olyanokat hoz elsőre, hogy ez lehetetlen, de én meg nem hiszem el.
Tipp?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
És még egy kérdés: Meg lehet e oldani valahogy, hogy mikor hívják a telefont, a hívás maradjon a háttérben, és az alkalmazás az előtérben?
Sajnos onDestroy-t okoz az alkalmazásban, ha hívják a telefont, ami nekem nagyon kellemetlen, mert az IOIO board is leszakad a programtól, és nullázódnak az állapotok.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Köszönöm!
Úgy néz ki megoldódott a probléma, nem kezeltem le az onpause,onstop,onresume állapotokat egyáltalán, üres függvényeket beraktam most már nem szakad le a board, és csinálja amit kell.
Viszont a hívás visszautasítást még mindig nem találom sehol jól.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szia!
Megint csak nem baj, ha root kell. Ajtónyitót csinálok, a telefon meg az ioio egy dobozban fog csücsülni, így a root-al nincs gond. A módszer érdekelne, mert csak azt találom mindenhol hogy impossible. Van egy megoldás, de az már a permission-ök miatt nem működik elavult megoldás, nekem nem is sikerült.
Engem pont ez mozgat, hogy van egy csomó call blocker program, én meg nem tudom megoldani...
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Sziasztok!
Éppen én is a bluetooth részt csinálom az appomhoz, nekem annyi kellene, hogy ha közelben elsétál egy látható bluetooth eszköz, akkor annak megkapjam a paramétereit. Sikerül az app elindításával startDiscovery();-vel egy alkalommal kinyerni a közelben levő eszközök listáját, de hogy tudom ezt megoldani úgy, hogy állandóan scanneljen? (A telefon örökkön örökké tápon csücsül, nem para az aksi)
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Érdekes, mert kipróbáltam azt, hogy feliratkozok a ACTION_DISCOVERY_FINISHED eseményre, és ott újra indítom a Discovery-t, de valamiért a ACTION_DISCOVERY_FINISHED esemény soha nem következik be, pedig megjönnek szépen az eredmények a talált eszközökről.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Újabb kérdés:
Még nem értem pontosan, de úgy tűnik, valamiért elszáll az app miközben a háttérben fut egy async task(egy json lekérés), a Timer indít egy startDiscovery(); metódust.
Mi okozhatja?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Logcat mondja:
06-04 10:22:42.079: E/AndroidRuntime(24879): FATAL EXCEPTION: main
06-04 10:22:42.079: E/AndroidRuntime(24879): java.lang.NullPointerException
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONObject.<init>(JSONObject.java:154)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONObject.<init>(JSONObject.java:171)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.example.thedoor.MainActivity$1GetTask.onPostExecute(MainActivity.java:133)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.example.thedoor.MainActivity$1GetTask.onPostExecute(MainActivity.java:1)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask.finish(AsyncTask.java:631)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.Handler.dispatchMessage(Handler.java:99)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.Looper.loop(Looper.java:137)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.app.ActivityThread.main(ActivityThread.java:4931)
06-04 10:22:42.079: E/AndroidRuntime(24879): at java.lang.reflect.Method.invokeNative(Native Method)
06-04 10:22:42.079: E/AndroidRuntime(24879): at java.lang.reflect.Method.invoke(Method.java:511)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
06-04 10:22:42.079: E/AndroidRuntime(24879): at dalvik.system.NativeStart.main(Native Method)PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Na soronkénti Log.v segítségével kiderítettem, hogy itt száll el:
inputStream = new BufferedReader(new InputStreamReader(dc.getInputStream()));
Kérdés, hogy miért csak akkor amikor a Timer elindítja a bluetooth pásztázást (sikeresen elindul). Ha viszont kikommentelem a startDiscovery()-t akkor megjön az eredmény szépen, ahogy kell.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz pittbaba #770 üzenetére
Úgy néz ki az async json lekérés indítása előtt kellett egy cancelDiscovery, így már nincs hiba. Azért a magyarázatára kíváncsi lennék miért zavarodik be a háttérfolyamat. Elvileg a startDiscovery is aszinkron fut, de ennek nem kellene a másikat zavarnia nem?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
Szerintetek JSON-t weblapról lekérni hogy a legérdemesebb?
Van ez a kód, tök jól működik, amikor működik, de néha IOExceptiont okoz, nem értem miért.Jó megoldás ez, vagy inkább httpClient?
public static String getJsonFromServer(String url) throws IOException {
BufferedReader inputStream = null;
URL jsonUrl = new URL(url);
URLConnection dc = jsonUrl.openConnection();dc.setConnectTimeout(5000);
dc.setReadTimeout(5000);
inputStream = new BufferedReader(new InputStreamReader(
dc.getInputStream()));// read the JSON results into a string
String jsonResult = inputStream.readLine();return jsonResult;
}PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
válasz WonderCSabo #778 üzenetére
Köszönöm!
A httpclient végül jobb megoldásnak bizonyult, mert jobban tudom kezelni a különböző hibákat. Egyébként igen timeout, illetve wifiről való leszakadozás okozta a kivételeket.
Most feltettem egy webservert a telefonra, így biztos nincs wifiről szakadozásÚjabb kérdésem:
Async taskban szeretnék egy boolean-t ha feltételek rendben vannak átbillenteni igaz-ra, majd 6mp múlva visszatenni false-ra. Async taskban ha megjön a JSON eredmény rendben, akkor kell, hogy a változó 6mp-ig true legyen. Thread.sleep(6000); nem jó, az utána következő parancsok is azonnal futnak le, nem várakozás után. Ez miért lehet, illetve mi a megoldás? A timerre gondoltam, h 6mp-ként megnézi az értékét és ha true, akkor átbillenti false-ra, viszont ha a timer éppen a 4. mp-nél jár, amikor átbillen true-ra a változó, majd 2mp múlva teszi false-ra az nem jó nekem. Hogy szokás ezt megoldani?[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
-
pittbaba
aktív tag
Igen, az OnPostExecute részben dolgozom fel az eredményt pont e miatt, hogy a főszálban tudjak maradni, így is most már Async, Looper, Timer egy appban már szétesek fejben lassan, de legalább haladok az alapok felderítésével
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
Új hozzászólás Aktív témák
- Vezetékes FÜLhallgatók
- Xbox tulajok OFF topicja
- Villanyszerelés
- Kerékpárosok, bringások ide!
- Kínai, és egyéb olcsó órák topikja
- Politika
- Redmi Watch 4 - olcsó hús, sűrű a leve
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- A fociról könnyedén, egy baráti társaságban
- Futás, futópályák
- További aktív témák...