Hirdetés
- Amlogic S905, S912 processzoros készülékek
- Bluetooth hangszórók
- Úgy állhat le a 16 GB-os GeForce RTX 5060 Ti gyártása, hogy közben nem áll le
- Hogy is néznek ki a gépeink?
- Hobby elektronika
- OLED monitor topic
- Vezetékes FEJhallgatók
- Kormányok / autós szimulátorok topikja
- VR topik
- Xiaomi LCD és LED TV-k
Új hozzászólás Aktív témák
-
bAtt001
addikt
táblázatot hogyan lehet be illeszteni a layoutba? table layouton kívül?

-
XperiaP
csendes tag
Így csináltam meg, de a sebesség a régi:
StringBuilder text = new StringBuilder();
BufferedReader br;
char[] bytes = new char[(int) filePath.length()];
br = new BufferedReader(
new FileReader(filePath));
int numRead = 0;
while ((numRead = br.read(bytes)) >= 0) {
text.append(new String(bytes, 0, bytes.length));
}
EditText tv = (EditText) findViewById(R.id.editText2);
tv.setText(text.toString()); -
Karma
félisten
válasz
XperiaP
#1795
üzenetére
Alapjáraton erre gondoltam:
StringBuilder text = new StringBuilder();
br = new BufferedReader(new FileReader(filePath));
char[] bytes = new char[131072];
int numRead = 0;
while ((numRead = br.read(bytes)) >= 0) {
text.append(new String(bytes, 0, numRead));
}
EditText tv = (EditText) findViewById(R.id.editText2);
tv.setText(text.toString());Még ezen is lehetne javítani, ha nem blokkonként csinálsz új stringet, hanem byte tömbbe olvasod az egészet, és egy konstruktorhívással letudod a dolgot. (new String(buffer, 0, buffer.length, "UTF-8"))
Viszont egyáltalán nem biztos, hogy ennyi elég, csak kozmetikázza a valódi problémát (EditText)...
-
XperiaP
csendes tag
A tv.setText() eredetileg csak egyszer volt benne, de akkor visszaírom olyanra.
Leírnád a kód többi részét, hogy mire gondolsz pontosan?
Szerk:
StringBuilder text = new StringBuilder();
BufferedReader br;
char[] bytes = new char[131072];
br = new BufferedReader(
new FileReader(filePath));
int numRead = 0;
while ((numRead = br.read(bytes)) >= 0) {
text.append(new String(bytes, 0, numRead));
}
EditText tv = (EditText) findViewById(R.id.editText2);
tv.setText(text); -
Karma
félisten
válasz
XperiaP
#1793
üzenetére
A tv.setText() hívás durván költséges, karöltve a folyamatos memóriadarálással a string konkatenálás miatt... Használj StringBuffert az adat összegyűjtéséhez, és a setText()-et csak egyszer hívd meg. Mondjuk ekkor sincs garancia arra, hogy jól fog menni (nem biztos hogy fel van készítve ekkora tartalomra a control).
Javárj, most olvasom újra. Ha van StringBuildered, akkor minek dekódolod még egyszer kézzel?

-
XperiaP
csendes tag
válasz
rgeorge
#1792
üzenetére
StringBuilder text = new StringBuilder();
br = new BufferedReader(new FileReader(filePath));
char[] bytes = new char[131072];
int numRead = 0;
while ((numRead = br.read(bytes)) >= 0) {
text.append(new String(bytes, 0, numRead));
EditText tv = (EditText) findViewById(R.id.editText2);
tv.setText(tv.getText().toString() + new String(bytes, 0, numRead));
}
Igazából az egy szerkesztőprogram, bármit megnyit amit kiválasztok fájlkezelőben. -
XperiaP
csendes tag
Sziasztok!
Van egy edittext-em amibe fájlokat olvasok be, de néha percekig tart (300-500kb.-os).
Egy while ciklus olvassa be BufferedReader-rel, 131000 byteonként(ez a leggyorsabb). Úgy vettem észre, hogy a beolvasás 1-2mp, a szöveg berakása az edittextbe tart sokáig, és el is feketül a kijelző.
1. Hogy tudnám gyorstani a folyamatot?
2. Hogy tudnám lekérni, hogy a szöveg beállítása az edittextbe hol tart? -
h1ght3chzor
őstag
Hogyan tudok olyat megoldani, hogy mobilt csatlakoztatom bluetooth-on keresztül a pc-hez, és az alkalmazásomban beloginolhatnék úgy mint windowsban (felhasználónév, jelszó), és csak egy igaz értéket kapnék vissza, ha a jó felhasználónevet, jelszó párost adtam meg.
-
thon73
tag
A kérdés több, mint jogos, de a válasz egyszerű: megígértem, hogy még a hétvégén elkészítem, és így egyszerűbb volt feltölteni. (Így is késtem vele egy napot
) ((Igaz, az nem mentesít, hogy az AIDE, amit tableten használok, alapból ismeri a GitHubot)) Ha megfelelő géphez kerülök, akkor felkerül oda, ill. blogcikket is szerettem volna/szeretnék írni erről, mert én rengeteget tanultam belőle - többek között itt kapott infókból is. Az eredeti ötlet többet tud, a kapcsolt táblákat (kereszthivatkozásokat) is kezeli. -
thon73
tag
válasz
lac14548
#1714
üzenetére
Az E-számokat tároló adatbázis kísérleti programja (és kódja) ITT TÖLTHETŐ LE Telepíthető adb a /bin mappában.
A program az alfa változat alfája. Egy nagyobb történetből lett "lebutítva". Teljesen működőképes (én használom), de nincs széles körben tesztelve, szóval AS IS (olyan amilyen). Ez azt is jelenti, hogy nem tökéletesen kész, de különben soha nem érnék idáig vele.
Mivel a kérdés itt merült fel, itt is osztom meg, de a megosztás célja elsősorban a tanulás. Ha bárkit érdekelnek részletek, talál hibákat stb. itt/püben/egyéb módon is szívesen fogadom.
Egy-két apróság:
Ez egy egyszerű sqlite alapú adatbázis, id-n kívül 3 szöveges mezővel. A negyedik mező tartalmazza a "normalizált", vagyis ékezetek nélkül kereshető kódot. Az adatbázist lista, ill. az egyes elemeket szerkeszthető módon is megjeleníti. A lista az E-számokra rendezett, szűrhető (minden mezőre, ékezet, kis-nagy betű nem érdekes), és (most még) unique bejegyzések nincsenek kikötve.
Gyakorlatilag loggol (igencsak bőven) egy {sdcard}/enumberdb mappába (a syslogon kívül), de elmétileg ez összeakadhat (ld. előző kérdéseim a threadekkel kapcsolatban) dolgozom rajta.
Az érdekessége (talán) a saját (egyszerű) file kezelővel bíró csv szerű export/import funkció, az adatok ezzel is bővíthetőek, ill. archiválhatóak. Vigyázat! importnál beilleszti a meglévő adatok közé a rekordokat!! (KI van kapcsolva az unique védelem, ugye.)
Külcsín, működés (pl ékezet, kereshető mezők) könnyen, igény szerint módosíthatóak. Persze a nyelv is.
Jó próbálgatást! Ötleteket, kritikákat szívesen veszek - már ami a kóddal kapcsolatos. Tudom, ez nem a Google Play, nem is ilyetén céllal került ide ez a kód. -
Ha szeretném magam fejlesztőként regisztrálni akkor mennyit kell fizetnem.? Megnéztem már a Google ide vonatkozó oldalát, ott 25$ van. Egyszeri díj. Tőlünk csak free appok mehetnek azt tudom.
Viszont most hallok fél füllel ilyen 440€ vagy valami hasonló összeget. Erről tudtok valamit?
Ha külföldről menne a történet az mit mutatna költségekben?
-
pittbaba
aktív tag
vgyuri: Sajnos nem jó, mert tudnom kell adminisztrálnom. Az egész ajtónyitó arra kell, hogy ne kelljen szaladgálnom két emelet, hogy a lépcsőházba felengedjem az ügyfelet. Na most ha minden új ügyfelet fel kell vegyek a telefonkönyvbe ahhoz hogy be tudjon jönni, ugyanúgy le kell szaladgáljak hozzáadni. (tudom-tudom miért nem elég ha én nyitogatok, de akkor meg csengő kell, ráadásul folyamatosan vacakolhatok a telefonommal, plusz nem csak nekem van itt irodám ha más is kitalálja h ezt meg azt adjak hozzá akkor hajamat tépem) Egymillió módon meg tudtam volna ezt oldani egyszerűbben, ha nem kellene tudnom távolról adminisztrálni úgy, hogy még a WIFI is instabil amin lóg. Én ha fejlesztek akkor úgy fejlesztek, hogy minden hibalehetőség be legyen számítva, éppen hogy kalapáccsal nem csapkodom meg a tesztkészüléket
Lehet működött volna ez sokkal egyszerűbben, de minden számításba véve ez az egyetlen életképes megoldás. -
pittbaba
aktív tag
Sziasztok!
Mindenhol azt olvasom, ha alarmmanagerrel oldom meg időnként az app futásának ellenőrzését, akkor ha az app véletlenül leáll, az akkor is működni fog, hát nálam ez nem igaz valamiért. Szépen működik az időzítés, beállítottam, hogy x mp-ként ismétlődő alarmmanager elindítja az app ellenőrző service-t, megy is, csekkolja, ha háttérbe kerül a program előhozza, viszont ha feladatkezelőben bezárom az appomat, valamiért elszáll az alarmmanager időzítés is, nem indítja a service-t. Miért lehet?
MainActivity-ből OnCreate-nél://CheckAppService futás ellenőrzés
Intent startSerciveIntent = new Intent(this, CheckAppService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, startSerciveIntent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pintent); -
válasz
pittbaba
#1724
üzenetére
Telefonos kapunyitó + webszerver: nem lett volna elég a telefonkönyvben nyilvántartani azokat a számokat, akik nyithatják a kaput és google contacts szinkronizációt beállítani? Ekkor nem lenne szükség webszerverre, mysql-re..., bejövő hívásnál csak megvizsgálnád szerepel-e a szám a telefonkönyvben, amit a weben is bármikor szerkeszthetnél, és a telefon is automatikusan szinkronban lenne vele, nem Neked kellene még ezzel is foglalkoznod.
-
WonderCSabo
félisten
Erre vki?
-
eastsider
nagyúr
válasz
WonderCSabo
#1771
üzenetére
köszi! közben rájöttem

-
eastsider
nagyúr
válasz
WonderCSabo
#1768
üzenetére
köszi!
hogy mióta keresem pont ezt!
-
fatal`
titán
válasz
WonderCSabo
#1768
üzenetére
Nekem csak crashelt néha a player.exe, együtt tudok vele élni. KitKat alatt még nem volt gondom vele, bár mostanában nem is igazán fejlesztettem.
Viszont a SIGSEGV hibák a 4.3 alatt még jelen vannak (a többi verziót nem érinti), dolgoznak rajta elvileg.
-
eastsider
nagyúr
válasz
WonderCSabo
#1762
üzenetére
köszi!
ezeket meg, de vannak vele gondjaim. de ez leginkábbis user error lehet gondolomigaziból nem sok értelmes samplet találtam, és egy spec. kamera alkalmazást szeretnék, amit egy alap kamera implementálással kezdenék
ez a genymotion nagyon szuper
köszönet a linkért -
Sianis
addikt
válasz
WonderCSabo
#1759
üzenetére
Ez kell nekem, kiváló. Kösz!
Sianis
-
eastsider
nagyúr
Sziasztok!
kamera API-hoz nincs vlaahol valami érthetőbb leírás, mint a hivatalos? -
kemkriszt98
tag
válasz
WonderCSabo
#1759
üzenetére
Hozzá kellet adni egy sort a Manifest fájlhoz:
<uses-permission android:name="android.permission.CALL_PHONE" /> -
Sianis
addikt
Jól értem, hogy az IntentService olyan, hogy az egyes kérések, felsorakoznak egymás után? Tehát egyszerre csak egy kérés tud futni?
Sianis
-
letepem
aktív tag
Csáó!
Most kezdtem el ismerkedni az android fejlesztői világával és máris problémákba ütköztem az emulálással kapcsolatban!
AMD-V-nel egyáltalán nem lehet gyorsítani az emulátort?
A konfigurációm egy trinity-re épül!Köszi előre is,
Miki -
Karma
félisten
válasz
kemkriszt98
#1750
üzenetére
Ez akkor azt jelenti, hogy sikerült önerőből megoldanod?
-
kemkriszt98
tag
válasz
kemkriszt98
#1749
üzenetére
Bocs, megint elfelejtettem a barátom : Google

-
kemkriszt98
tag
Sziasztok, nem tudom hogy ez off-e (nem tudom hogy kódból érdemes megoldani vagy valami beállítással )
Az a lényeg ennek az intentnek a kezelésére(?) a legalkalmasabbnak a skypeot találja az android nekem meg az alapértelmezett telefon alkalmazás kellene:Intent i = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + number));
-
thon73
tag
Aha. Ezt nem olvastam, csak a doksit. Akkor tényleg nem véletlenül írják, hogy Android alatt ez nem használható.
Megnéztem a "hivatalos" Log-ot is, de az teljesen használhatatlan (nekem), mert alacsony szintű hívással az op-rendszer logját írja, amit viszont én nem tudok kiolvasni. (Ill. csak PC kapcsolatban, meg rootolt készüléken)
Még nem tudok teljes mélységben válaszolni, de próbálkoztam, olvasgattam, és érdekes eredményeket kaptam.
1. A külön file-író thread azért is nagyon jó ötlet, mert akkor ez nem is lassítja pl. az UI thread-et. Az elkészítéstől egy kicsit megriadtam, de nekiláttam. ITT találtam egy hasonló elgondolást, ebből annyi látszik, hogy ez nem lesz olyan egyszerű.2. A Channel thread-safe egy programon belül. Hm. ezt nem tudtam, pedig a doksi is egyértelműen ezt írja.
3. ITT azt az okosságot írják, hogy Channelen kívül NEM lehet többször (tehát több threadból) írásra megnyitni egy file-t. (Ez szerintem nem igaz, én írtam file-t egyszerre több nyitott úton keresztül, igaz egy thread-en.)
4. Ez a legérdekesebb: leteszteltem. Csináltam több párhuzamos thread-et, mindegyik ugyanazt csinálja: megnyitja/írja/bezárja ugyanazt a file-t, mégpedig OutputStreamWriter(FileOutputStream) úton. (Igaz, ez pufferelt, de a puffer többszörösét írtam ki, kb 2 Mbyteot, 4 threadról.)
Nem létezik, hogy soha ne ütközzenek. Mégis, az összes kiírás tökéletes! Tettem elé time-stamp-et, sokszor egyforma, mégsincs hiba!!
Vagyis: Minden elmélet ellenére gyakorlatilag lehet egyszerre több threadról írni ugyanazt a file-t. Most akkor ez hogyan lehet? Mégis "thread-safe" lenne az alacsony szintű írás androidon?? Lehet, h. itt működik, más java környezetben meg nem??
-
Karma
félisten
Ez a kérdés alapján Androidon a FileLock pont az ellen nem véd, amit te csinálsz a fájllal, azaz egy processzen belül két szál között nem csinál semmit...
Szerintem egyébként a teljes elképzelés rossz, a fájlt egyetlen objektumnak szabadna csak írnia, és akkor nem kellene lockolgatni semmit. Például egy háttérszál, akinek van egy BlockingQueue-ja, amibe mindenki más belerakhatja a kiírandó szövegeket, ő meg bedarálja ha van mit, a többi időt meg altatásban tölti.
-
thon73
tag
Még egy utolsó kérdést hadd tegyek fel:
A file írás nem mindig történik meg a záráskor sem (Ezt RandomAccessFile esetén tapasztaltam, még a program bezárása után is hozzányúlt, igaz, csak a metaadatokhoz).
Nem biztonságosabb a FileLock használata az esetemben? Vagy ugyanazt az eredményt érem el, mint a synchronized védelemmel? -
Karma
félisten
Ezzel az egyszerűsített formával már nagyon közel kerültél az általam ismert legtisztább megoldáshoz (szálakat indítani igazi borzalom volt), viszont még mindig eggyel több felesleges holtjáték van benne: ez a láthatatlan View felesleges, ugyanis az Activitynek van egy onUserInteraction metódusa, ami akkor hívódik meg, ha a felhasználó piszkálja az appot.
Ezt használhatod a Handler takarításához.
-
Sianis
addikt
Kicsit egyszerűbre vettem a figurát. Raktam az egész elé egy View-t, ami invisible. Ennek lett egy OnTouchListenere, ami mindig false-t ad vissza, így nem avatkozik bele az alatta lévő bármilyen elem működésébe, ugyanakkor leállítja a postDelayed-del megadott Runnable-t ami megjelenítené a tutorialt. Miután megjelenik a tutorial, elindul ugyanígy egy másik Runnable, ami pedig amint lejár eltűnteti a tutorialt és törli a láthatatlan view-t is így végképp kikerül a zavarási eshetőségek közül.
Sianis
-
thon73
tag
Vicces, most derült ki mennyire topa vagyok a multithread-del, mégis megosztom egy volt ötletem. Én scrolloztatni akartam a képet, amíg a delikvens hosszan nyom egy pontot. A longpress nem jó, mert az csak egy dolgot csinál meg utána, aztán megint vár. Sztem. neked ugyanez kell fordítva: Ha érintés történik, akkor megszakítod a thread-et.
Egy két kódrészlet:TouchThread touchThread;
@Override
public boolean onTouchEvent(MotionEvent event)
{
...
case MotionEvent.ACTION_DOWN:
touchDirection = 1;
touchThread = new TouchThread();
touchThread.start();
break;
case MotionEvent.ACTION_UP:
if (touchThread != null)
touchThread.interrupt();
break;
}
...
}
private class TouchThread extends Thread
{
@Override
public void run()
{
// Csak vár, hogy hosszú nyomás legyen
for (int cnt=0; cnt<3; cnt++)
{
sleep(100);
if (isInterrupted())
{
touchThread = null;
return;
}
}
// Innentől történik a gyorsuló görgetés
int pause = 150;
while(true)
{
for (int cnt=0; cnt<15; cnt++)
{
sleep(pause);
if (isInterrupted())
{
touchThread = null;
return;
}
// Itt kérjük meg a görgetést az UI száltól !!!!!!
touchThreadHandler.sendEmptyMessage(0);
}
if (pause > 85)
pause -= 30;
}
}
// A görgetést a Handler fogja elvégezni
private Handler touchThreadHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (touchDirection >= 0)
rollForwardLine();
else
rollBackwardLine();
touchState = 0;
invalidate();
}
}
}Ezt elég régen írtam, aztán megszakadt a dolog. Egyébként nem csak az időzítést tudja, hanem egyre gyorsul is a görgetés, amíg nyomod a képet.
Bocs, hogy a kód összetöredezett, amíg kiszemezgettem, de sztem a lényeg érthető. Mint kiderült, nem vagyok (még) teljesen otthon a thread-ekben; (ha valaki hibát talál, és szól, köszönöm); de a kód prímán működik. -
Sianis
addikt
Adott egy screen, lényegtelen mennyi minden van rajta. x mp tétlenség, tehát nem ér semmihez, semmilyen módon, fel akarok dobni egy kis tippet. Utána ezt elrejteni y idő után, vagy érintés után.
Van erre valami jó kis módszer? Az a bajom, hogy mindennek nem adhatok onTouchListener-t, hiszen van neki sajátja, meg ezért egy Button-ból nem csinálnék külön sajátot.
Minden ötletet szívesen látok.
Köszi!
Sianis
-
Benex
senior tag
Sziasztok!
A computerschookl-ba járok Debrecenbe és szoftverfejlesztőnek tanulok. Nyári gyakorlatot keresek , ami android szoftverfejlesztéssel kapcsolatos.(Mivel iskola elvégzése után is ezzel szeretnék foglalkozni) Sajnos eddig nem találtam magamnak egy helyet sem , ahova tudnék jelentkezni , mivel nincs "hallgatói jogviszonyom".3 éve fogllakozok androiddal, így minden téren ( pl. romolgatás( virtuálisan ubuntu os-on rom forgatás ), kernelek cseréje , és android alkalmazások írása ( egyenlőre alapszinten )). Ha tudnátok nekem segíteni , lehetőségeket mondani, hogy hova próbáljak jelentkezni, nagyon megköszönném.
Ismert programozói nyelvek: Java(alap),C++( 1 éve tanulom,középszinten vagy még jobban is megy ), HTML ( 5 ),CSS,SQL.
Alapszinten beszélek angolul és Németből most tervezek nyelvvizsgát középszinten(április-május körül, és ezután 1-1,5 éven belül angolból is szeretnék ).
Előre is köszönöm szépen a segítségeteket, nagyon fontos lenne ez nekem
Üdv: Benex
-
Karma
félisten
Az első verzió biztosan nem fog működni, mert a lock objektum példányváltozó, míg a metódusod statikus. A lockot "static final"-ként deklarálva ellenben működhet.
Egyébként a két megoldás között a különbség pont az, amit kifejtettem korábban: ha a synchronized kulcsszót használod a metódus szignatúrájában, akkor vagy a this (példánymetódus esetén), vagy a class objektum (statikus esetben) lesz a lock. Mindkettő elérhető kívülről, így +1 deadlock faktor.
-
thon73
tag
Aha! Köszönöm. 1. pont alapján a kódot javítottam.
2. Eddig multithreadet (a rendszer által kínált lehetőségeken kívül) csak időzítési feladatokra használtam. Viszont - a log szigorításával - szükségem lett volna egy "saját" log-ra, amit akkor is használhatok, ha tableten dolgozom. A program nagyon egyszerű, egy file-ba írja az üzeneteket. ((Az esetleges összeomlás miatt a metódus nyitja-írja-zárja a file-t (flush is lehetne helyette, de az idő nem volt lényeges szempont)). Ilyen üzenet bármelyik thread-ről érkezhet, ezért szeretnénk biztos lenni abban, hogy működik.
Két megoldást találtam a figyelmeztetésed után:
private final Object lock = new Object();
private static String addTextToFileLog( File logFile, String text )
{
synchronized( lock )
{
OutputStreamWriter logStream = new OutputStreamWriter( new FileOutputStream(logFile, true));
logStream.append( text );
logStream.flush();
logStream.close();
}
}illetve:
private static synchronized String addTextToFileLog( File logFile, String text )
{
OutputStreamWriter logStream = new OutputStreamWriter( new FileOutputStream(logFile, true) );
logStream.append( text );
logStream.flush();
logStream.close();
}(A hibaellenőrzést az egyszerűség kedvéért töröltem.)
Van előnye egyik vagy másik megközelítésnek? Egyáltalán jó ez így, vagy valamit elnéztem?
Ha még abban tudnék egy kis segítséget kapni, hogy ezt hogyan tesztelhetem a szimpla próbálkozáson kívül, azt is megköszönném! -
Karma
félisten
1) Bevett gyakorlat, hogy a lockhoz használt objektum egy mindentől független, kívülről nem látható, de belül se cserélhető (azaz final) tagváltozó legyen. Ezzel biztosítható, hogy csak ez az egy osztályod lockolhasson az általa védett dolgai körü
l, külső kód véletlenül sem; és hogy nem cserélheted ki másik példányra egy mellényúlással. Vesd össze, ha mondjuk egy ArrayListre lockolsz és van egy gettered a listához, más is rálockolhat és bedeadlockolhatod a programot. Vagy adatok újratöltése után új ArrayListet hozol létre.Más jelentősége tudtommal nincs.
2) Akkor eddig szerencséd volt, hogy az írás és a fájlhandle lezárása gyorsabban lement, minthogy ütközzenek... [link]
-
thon73
tag
Bocsánat, ha nagyon alapot kérdezek:
Az android forráskódban mindig synchronized( mLock ) kifejezés szerepel. Miért nem a védett tartalomra (mondjuk egy array-listre) szinkronizál, miért kell egy külön objektumot erre létrehoznia? (Azt értem, hogy ez miként működik, csak azt nem, hogy ez így miért jobb?)
Én ugyanis eddig mindig a védett tartalmat írtam be.A másik hasonló kérdésem: ha ugyanazt a file-t külön szálakon is írom, de minden szál külön nyitja meg (tehát nem közös leírót használnak), akkor ugye nem kell a szálakkal és a szinkronizálással törődnöm, a rendszer sorba rakja a kiírt adatokat? (Mindig csak egy sornyi append van, tehát a program oldaláról nem feltétlenül kellene külön lock-olnom a file-t)
Gyakorlatilag működik a program, csak azt nem tudom bizonyítani, hogy elvileg is mindig működőképes lesz. Köszönöm!
-
pittbaba
aktív tag
Úgy indult, de mivel a lényeg pont az, hogy nem biztos h mindig neten tud lenni, a wifi instabil, viszont nyitnia mindig kell, ezért lett a választás a localhost, na meg a sebesség miatt is. Szóval ha elfelejtek előfizetni internetre, akkor sincs kimaradás, ha lefüstöl a router akkor sem. Naponta több mint 100 alkalommal van belépés, így fontos lenne hogy offline is működjön.
Most próbálom megoldani okosba, több időt kap a webserver reboot után, így eléggé összekapja magát és most mint ha ez a része jól menne (még sok tesztelés vár rá)
Sajnos a IOIO miatt előtérben kell tartani az appot, most átgondoltam az alapján amiket mondtatok, és sikerült kicsit barátságosabban megoldani a futás ellenőrzést.
A service dolog bevált, onPause-nál meg egy változót átbillentek igazra így a service-nek meg tudom mondani, hogy éppen fut e a program, vagy csak háttérben van, és ehhez képest előtérbe hozom, vagy elindítom. Még nem hibátlan mindig, de már egy szebb megoldás. Köszönöm a mai tanácsokat
-
Karma
félisten
válasz
pittbaba
#1726
üzenetére
Azért erre egy LAMP stacket bedobni a telefonra hogy távolról konfigurálható legyen igencsak overkill... Olyan baltával faragott vaskarika, fából.
Ha a telefon úgyis internetre lát folyamatosan, én kidobnám az egészet a kukába, és leraknék egy webservice-t valahol ami megmondja egy telefonszámról hogy valid-e vagy sem. Ingyen futtathatsz ilyet Azure-ban (Mobile Service-szel még kódolnod se kell), OpenShiften, Herokun, Google App Engine-en, és még ki tudja hány másik helyen.
Az életben tartáshoz egyébként használhatod az AlarmManagert is, periodikusan ráhívva a service-edre, így az Android biztosan beindítja, ha nem futna. Szerintem megérné.
-
eastsider
nagyúr
Sziasztok!
valaki foglalkozott már AR drone alkalmazás feljesztéssel android alatt?
van külön SDK-ja. -
pittbaba
aktív tag
válasz
WonderCSabo
#1725
üzenetére
Vannak letölthető appok amik csomagban adnak webservert php modullal illetve mysql servert, és phpmyadmint. Ilyeneket próbáltam, volt amit meg is vettem, de mindegyiknél az a baj, hogy a server indítása gombnyomáshoz kötött, ami meg esetleg beállítható h bootkor startolja a servert az is néha bugos, nem indul a server automatikusan telefon reboot után, de a webservert kezelő app fut.
Ilyenkor az én appom ezt érzékeli és újraindítja a webservert kezelő appot, de az továbbra sem mindig indítja el magát a webservert. Ezért olyan megoldás kellene, hogy lenyúlok magáig a webserver programig és azt indítom.
A webserver azért kell, hogy le tudja kérni a programom hogy az adott bejövő hívás telefonszáma benne van e az adatbázisban, mert csak akkor nyit az ajtó. Azért nem sima appon belüli adatbázist használok, mert valahogy távolról tudnom kell adminisztrálni, ezért json -al adom át az adatot a mysqlből az appnak.Mivel szeretném hogy minden éjszaka legyen egy automatikus reboot, ezért fontos hogy megoldjam reboot után minden felálljon rendben, ha pedig nem akkor próbálja javítani.
Remélem sikerült normálisan leírnom.

A ciklusokat értem, sokat tanulmányoztam, rengeteget teszteltem már, de még mindig hajlamos vagyok bekavarodni.
-
pittbaba
aktív tag
Hunfatal: Ez tök jogos igen...
Karma: Igen, akik erre kerestek választ, volt hogy ezt találták végső megoldásnak. A baj ha fejlesztés végén vagyok már, és most ezért átszervezni az egészet.. hát nem tudom... főleg hogy már minden működni látszik, és most ilyen idiótaságot kell debuggolni...A service egyébként tényleg nem volt egy nagy ügy, már szépen működik is. Azt nem értem, hogy ha feladatkezelőben kilövöm az appomat akkor a service miért áll le, hisz pont az lenne a dolga hogy ne tegye ezt?
Nem a memória ürítése részt használom, hanem feladatkezelő, s az appomat kiválasztva befejezés. A service-ben lévő handler ami időről időre csekkolja a háttérben h fut e az alkalmazás is elhal. Miért?Telefonos kapunyitót akarok készíteni IOIO van a telefonra kötve, egy éve szórakozok vele, hogy stabil legyen, de lassan feladom, mert egyszerűen mindig kijön valami hiba amivel nem tudok mit kezdeni.
Fut egy webserver app is a telefonon az csinálja a legtöbb gondot, mert egyszerűen egyik WS appot sem képesek megcsinálni úgy hogy a háttérben automatikusan elinduljanak a szolgáltatások

Sajnos az USB kezelés is vicc, 5-ből 2x kapaszkodik össze a IOIO-val és csak rebootokkal lehet orvosolni ha nem sikerül, ezért szeretnék írni egy önjavító funkciót, ha leszakad a IOIO akkor addig rebootol amíg össze nem csatlakozik. Na itt van a gond, reboot után a WS programon belül gombbal kell indítani a lighttpd-t meg a mysql-t (nem tudom mi értelme ennek így de az összes appan így van). Adjatok már tanácsot, mindig kapok itt 1-2 jó tippet amivel tovább tudok haladni, hátha most is lesz valami okosság...
Ti a webserver részt hogy oldanátok meg? -
pittbaba
aktív tag
-
Karma
félisten
válasz
pittbaba
#1719
üzenetére
Egy dolog hogy ágyúval verébrének tűnik, de ha egyszer ez a rendeltetésszerű használata az Androidnak, nem pedig szembemenni a UI életciklussal, szerintem nem kéne kategorikusan elvetned.
Nem nagy cucc egyébként egy Service osztályt írni, én is meglepődtem az első után, visszatekintve a félelmeimre.
-
thon73
tag
válasz
pittbaba
#1716
üzenetére
Lehet, h. hülyeség, amit gondolok, de a "kilövés" az egész Application process-t érinti. A handler azon belül van, - elvileg - az is megszűnik. Arra kellene rájönni, hogy miért lő ki a rendszer egy előtérben lévő Applicationt? B lehetőség: Ha esetleg nem az application process indítaná a handler-t? Pl. service - bár ezzel nincs tapasztalatom.
-
thon73
tag
válasz
lac14548
#1714
üzenetére
Engem se fogott meg
Ezért csináltam sajátot. A program kész, csak átírom a mezőket. Kis türelmet mégis kérek (munkahely, egyebek), de sztem. hétvégén küldöm. Az ékezetekkel nem értek egyet, mert uis. pl. én is ékezet-mentes bill.zetet használok. Egyébként egy kódtábla átírásával gyakorlatilag bármilyen keresési megfeleltetés beállítható, úgyhogy kipróbálhatjuk az ékezetes keresést is. Üdv!
Azért írtam ide, mert úgy gondoltam, ide küldöm - hátha más is érdeklődik. -
pittbaba
aktív tag
Sziasztok!
Szeretném a programomat mindig előtérben tartani. Erre olyan megoldásokat találtam, hogy onPause-nál újra indítani kell az activityt ezért ha valami véletlen le is állítja az appot, akkor így újraindul. Egy handlerrel van megoldva, ami onpause-nál 10 másodperc után újraindítja az appot.
Ez általában működik is, láthatóan home gomb nyomásakor eltűnik majd visszajön stb..A gond az, hogy reboot után a telefon szintén BootReciever-el indítja az appot, és ha ilyen módon indul el (nem az sdk-ból futtatom) akkor két perc múlva valamilyen ismeretlen folyamat kilövi az appot, és a logok szerint onPause() még lefut, de a benne lévő handler már nem.
Ha nem handlerrel indítom újra akkor végtelenül folyamatosan ugye onpause-onresume felváltva futnak.
Érdekes, hogy onstopig illetve ondestroy-ig nem jut el, valahogy mégis elszáll a handler is.Ha az sdk-ból futtatom a programot, érdekes módon nem ez történik.
Az autó lockscreent is az app tiltja, ébren tartom a telefont, működik is, viszont mikor a hibajelenség felmerül, és az onPause lefut, akkor valamiért bejön a lockscreen is azonnal.
Van erre valami magyarázat? Ha kell még infó/kód, írjátok!
-
h1ght3chzor
őstag
Semmi, megoldva.
-
lac14548
aktív tag
Megnéztem ezt a memento database-t, de nem igazán fogott meg.
Jobb lenne egy kifejezetten arra a célra készült app ami nekem kell.- Küldd el, kérlek, pontosan milyen mezők kellenek!
A már korábban említett 3 mező kellene:
1. Szám (ez maximum 10 jegyű betű és szám vegyesen, kis és nagybetű.)
2. megnevezés (itt több is lehet egy számhoz tartozóan, de a keresésnek bármelyikre tudni kell keresni)
3. leírás (ez egy hosszabb szöveges leírás)A keresés tegyen különbséget az ékezetes karakterekben, viszont a nagy és kisbetűk között ne!
- És milyen "végtermék" kellene? Forrás-project eclipse alá? Vagy csak a kész progi?
A végtermék a kész apk kell, hogy legyen, de ha az adatbázis feltöltéséhez/bővítéséhez/javításához kell a programozási felület, akkor úgy is jó.A továbbiakat szerintem folytassuk privátban, ne terheljük a fórumot.
Kösz,
-
rgeorge
addikt
válasz
Ablakos
#1710
üzenetére
A getText() CharSequence-vel tér vissza, ennek leszármazottja a String. Ha pl. éppen String-et ad vissza, mert pl. a setText-et String paraméterrel hívták meg, akkor a második megoldás is helyes, cast-olható String-gé a getText(). Más CharSequence (Spanned stb.) már nem cast-olható String-gé.
Az első megoldás mindig helyes, a toString() mindig String-et ad vissza.
Mondjuk van putCharSequence is, az talán még jobb lenne:
outState.putCharSequence("TEXT",simpleText.getText()); -
Ablakos
addikt
Az onSaveInstanceState methodus textField állapotmentésben nem értem mi a különbség a két kód között:
outState.putString("TEXT",simpleText.getText().toString());
vagy
outState.putString("TEXT", (String) simpleText.getText()); -
Karma
félisten
Volt egy szakasz, amikor a BugSense SDK-ja nyílt forráskódú volt, akkor húztam be a forrását, és alakítottam át úgy, hogy az ő rendszerük helyett saját Azure-os backendre küldje a cuccot (eszközadatok, stacktrace főleg), ott meg tárolom és emaileket küldözgetek.
Az androidos oldal lényege egyébként annyi, hogy az Application onCreate-ben meg kell hívni a Thread.setDefaultUncaughtExceptionHandler metódust, ezzel lehet mindent elkapni.
-
Karma
félisten
Jahogyja. Nem jött át a szándék, hogy integrálni akarnád ezt a cuccot a projektedbe, és ott van ez a telepítési mizéria

Egyébként meg próbáld meg kézzel berakni a metaadatot.
Vagy ez a tool maga generálná ki az API kulcsot? Mert akkor nehezen tudom elképzelni, ki generálná le helyettük
Nem használtam még, TestFlightot illetve saját hibanaplózó cuccot szoktam csak.
-
Sianis
addikt
Tipp arra, hogy hogyan lehet megkerülni a Crashlytics plugin felrakását? Azért API kulcsot még szeretnék kapni!

Sianis
-
fatal`
titán
válasz
WonderCSabo
#1701
üzenetére
Igen tudom.

Új hozzászólás Aktív témák
- Tesla topik
- Kezünkben a OnePlus 15 és az Oppo Find X9-ek
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Windows 10 Mobile (Windows Phone) szakmai topik
- Amlogic S905, S912 processzoros készülékek
- Futás, futópályák
- Exkluzív órák
- Autóápolás, karbantartás, fényezés
- OTP Bank topic
- sziku69: Szólánc.
- További aktív témák...
- RAM memória Crucial Pro OC Gaming 16GB DDR5 6400MHz CL32 Black - bontatlan, új
- Dell Latitude 7420, 14" FHD IPS kijelző, i7-1185G7 CPU, 16GB DDR4, 256GB SSD, W11, Számla, 1 év ga
- Corsair 64GB KIT DDR4 3200 MT/s CL16 Vengeance LPX - bonatlan, új
- Corsair 32GB KIT DDR4 3200MHz CL16 VENGEANCE RGB PRO SL Black - bontatlan, új
- LG UltraWide 49WQ95X-W monitor
- Samsung Galaxy S21 Ultra 5G 12/128GB Fekete / 12 hó jótállás
- AZONNAL KÉSZLETRŐL! Intel Core i5 14600K 32GB 6000MHz RAM 2TB Gen4 SSD RTX 5060 8GB FSP 750W
- Samsung Galaxy S23 Ultra Green 120 Hz Dynamic AMOLED 2X, 200 MP kamera, beépített S Pen
- Telefon felváráslás!! Samsung Galaxy S22/Samsung Galaxy S22+/Samsung Galaxy S22 Ultra
- Apple iPhone Xs 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest


) ((Igaz, az nem mentesít, hogy az AIDE, amit tableten használok, alapból ismeri a GitHubot)) Ha megfelelő géphez kerülök, akkor felkerül oda, ill. blogcikket is szerettem volna/szeretnék írni erről, mert én rengeteget tanultam belőle - többek között itt kapott infókból is. Az eredeti ötlet többet tud, a kapcsolt táblákat (kereszthivatkozásokat) is kezeli.
![;]](http://cdn.rios.hu/dl/s/v1.gif)
Lehet működött volna ez sokkal egyszerűbben, de minden számításba véve ez az egyetlen életképes megoldás.

Ezért csináltam sajátot. A program kész, csak átírom a mezőket. Kis türelmet mégis kérek (munkahely, egyebek), de sztem. hétvégén küldöm. Az ékezetekkel nem értek egyet, mert uis. pl. én is ékezet-mentes bill.zetet használok. Egyébként egy kódtábla átírásával gyakorlatilag bármilyen keresési megfeleltetés beállítható, úgyhogy kipróbálhatjuk az ékezetes keresést is. Üdv!



