- Motorola Edge 40 - jó bőr
- Bemutatkozott a Fairphone 6
- Samsung Galaxy Watch7 - kötelező kör
- Megjelent a Poco F7, eurós ára is van már
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Honor Magic V2 - origami
- iPhone topik
- Xiaomi 14 - párátlanul jó lehetne
- Hammer 6 LTE - ne butáskodj!
- Eltűnhet a Dinamikus Sziget
Új hozzászólás Aktív témák
-
eastsider
nagyúr
köszi
én is csodálkoztam, hogy kirajzolja
genymotionbe még fel se tűnt, hogy milyen lagos (bár azzal foglalkoztam, h mi a szarnak rajzolja ki?) de telón eléggé durva volt
Csabo Neked is köszi!
content Providerrel tudom használni? (belenéztem a példába, de nem volt egyértelmű)
-
h1ght3chzor
őstag
Calendar calendarBeginTime = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date beginTimeDate = (Date) format.parse(beginTime);
calendarBeginTime.set(beginTimeDate.getYear(), beginTimeDate.getMonth(), beginTimeDate.getDay(),
beginTimeDate.getHours(), beginTimeDate.getMinutes(), beginTimeDate.getSeconds());
calEvent.put(CalendarContract.Events.DTSTART,calendarBeginTime.getTimeInMillis());Így mindet áthúzza, és azt írja, hogy "The method get****() from the type Date is deprecated". Vagy nem így kellene használni?
-
thon73
tag
Aha. Pont erre jutottam, hogy az app sokkal ellenállóbb, mint az activity.
Azt hittem pedig, hogy amikor memóriára van szükség, akkor nem csak az Activity-t, hanem a teljes App-ot leállítja. (A kilövés az világos, az FC is logikus, de arra nem gondoltam)Csakhogy ez újabb gondolatokat is ébreszt bennem: Ha az app megmarad, akkor a teljes process megmarad, nem? Akkor viszont az elindított thread-ek sem fognak megállni? Vagy hogyan van ez? Én azt gondoltam, hogy a BACK-kel (v. pl. finish-sel) való kilépéskor, ill. ha elfogy a hely, akkor ez leáll - de ezek szerint tévedtem.
-
-
eastsider
nagyúr
közbe meglett a hiba. csak a nexus 7 2013 amin tesztelek nem dobott semmi exceptiont... a hiba az volt, hogy nem jó sorrendben volt a checkColumns metódus.... mostmár megy...
azt találtam ki, hogy a listview-n setOnItemClickListener-t állíok, és ekkor, ha egy elemre kattintok, akkor betöltse a hozzá tartozó elemeket ami egy másik táblából jön.
és mivel tabos az alkalmazásom onActivityCreatednél a másik tab kilistázza az összes lehetséges elemet, ami a másik táblák alatt van.. nem tudom jól megfogalmazni
szóval van egy filmek tábla, és van egy képek tábla, egy filmben van több kép, egy kép egy filmhez tarozik, de több kép tartozik egy filmhez -
thon73
tag
A broadcast-okkal megy is szépen, a példaprogramokban is broadcast-ok szerepelnek, csak éppen a rendszer által indítottak.
Lehet, hogy nekem is broadcastolni kellene az activity-ben, ha valami változik? Hm. Ez egy megfontolandó ötlet, köszi.Amúgy a Loader-ekkel én is csak ismerkedés szintjén "játszom". Van egy file-ban tárolt adathalmaz, aminek a beolvasása kb. 4-5 sec. Ezt akartam beletenni Loader-be. Ez - a felhasználó oldaláról - statikus adathalmaz, tehát nincs mit figyelni. Az én (tesztelő) oldalamról van lehetőség a változtatásra, de akkor újramenti a teljes megváltoztatott adatbázist (mert módosításkor az összefüggő adatok miatt a nagyrésze megváltozik). Ettől függetlenül arra voltam kíváncsi, hogy ha én változtatok a külső adatokon az Activity-ben (bocsánat -ból), akkor hogyan értesülhet erről a Loader.
A fenti (mostmár két) megoldáson kívül még egy érdekes osztályt találtam: a FileObserver-t. De az még bonyolultabbnak tűnt.Ami még gondnak tűnik nekem: végső soron a Loader-rel is be kell olvasnom mindent, ahhoz, hogy a lista eleje megjelenjen. Ez amúgy logikus (mert nem biztos, hogy a lista eleje töltődik be először), de a várakozási idő ugyanúgy megvan (csak pörög az óra...)
-
WonderCSabo
félisten
A eclipse Team -es pluginjai jók, én is használom őket (mind az egitet, mind a Subversive-et). A GitHub for Windows kerülendő.
Mondjuk a merge-et az istennek se tudom használni az eclipseben belül, ebből sokkal jobb pl. a TortoiseMerge.Ja thon73, ha IntelliJ-t használsz, abban asszem alapból van git plugin, bár a git-et magát fel kell rakni..
-
eastsider
nagyúr
közben frissült az SDK
és ezt kapom:
[2014-03-23 19:03:48 - analogue.note] Dx
trouble processing "javax/xml/namespace/QName.class":Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
....
....
.....[2014-03-23 19:03:48 - analogue.note] Dx 1 error; aborting
[2014-03-23 19:03:48 - analogue.note] Conversion to Dalvik format failed with error 1
mi lehet ez? nem működött semmi, amit eddig találtam -
WonderCSabo
félisten
kemkriszt98: Picit pontosítok: ArrayAdaptert használj, az előre meg van írva jól, gyakorlatilag Te azt "találtad fel" újra - csak rosszul.
Hogy miért nem jó a Te deleteAll() metódusod, azt én sem mondom meg, próbálj rájönni.
-
Benex
senior tag
Unfortunetly, Simple Reboot has stopped , gondoltam arra , hogy reboot miatt áll le, de nem hiszem, hogy az a baj. Arra gondoltam , hogy ilyenkor kell e a finish();???
(Újabb észrevétel ART vm alatt nem megy,azaz itt is FC lesz, de itt nem is indul újra, most állok vissza dalvik-ra ) -
h1ght3chzor
őstag
Én is így gondoltam, de valamiért nem működik. Így csináltam:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btnKijelentkezes= (Button) findViewById(R.id.btnKijelentkezes);
btnKijelentkezes.setClickable(false); -
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()); -
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); -
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
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??
-
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! -
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 -
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
-
RexpecT
addikt
Tehát annak ellenére, hogy a Service is a main szálon fut, jobb lenne ez a megoldás? Jelenleg egy külön osztályban van a helymeghatározás, igazából jól is működik, de tudom, hogy ez így nem a legjobb megoldás.
A Servicetől akkor jobb megoldás lenne az IntentService ami már külön szálon fut, vagy tévedek(bár ahogy most rákerestem, stackoverflow-n is a sima Service-t ajánlják)? -
thon73
tag
Visszatérek egy korábbi beszélgetéshez, mert ígértem, hogy számot adok az eredményeimről (ezt egy rövid részben már megtettem). Bocs, egy kicsit hosszabb lesz, aki nem érdeklődik, ugorjon nyugodtan!
Másrészt kicsit Java topicba kívánkozik, de mivel a mérések célja az Android felderítése volt, (no meg itt kezdtünk bele), inkább itt folytattam.A probléma: indexelt utf-8 kódolású fileban ugrálni (seek) ide-oda, és rövid részeket beolvasni. Az első ötlet a Reader, a második ötlet a puffer használata volt. Mindkettő jó, de az alap osztályokkal nem megvalósítható.
fis = new FileInputStream( file ); // byte alapú beolvasás
isr = new InputStreamReader( fis, "UTF-8" ); // már karakteralapú, dekódolt és pufferelt (fix puffer)
br = new BufferedReader( isr ); // readLine is van, és még nagyobbra állítható pufferfis.getChannel().position(pos) segítségével seek megvalósítható. DE! Amíg van a pufferban elem, azt használja. A puffer nem törölhető, az available() sem implementált, amivel skippelni lehetne. Egy megoldást láttam: minden seek után újranyitni a file-t. További hátrány: a puffert teljes egészében dekódolja, ha kell, ha nem.
Megoldás: puffereléssel és utf8 dekódolással bővített Reader osztály (én valójában a RandomAccessFile-t használok a háttérben, de FileInputStream ugyanúgy jó. A "kimenet" azonban Reader lesz.) Ez már másnak is eszébe jutott ITT, én ezt az ötletet fejleszettem tovább.
A tesztben hátulról előre 100 byte-onként végzek lineRead()-et egy 3,8 megás, rövid sorokat tartalmazó szöveges file-ban. Az eredmények megdöbbentőek (sajnos eléggé szórnak) A nem-pufferelt (egyébként azonos osztály) 20000 ms körül teljesített. Ugyanez puffereléssel: 600-900 ms
Kimértem a különböző pufferméreteket is (ez a szórás miatt nehezebben meghatározható). DE! Az jól látszik, hogy 500 byte puffer alatt rosszabb a teljesítmény (800-1000 ms); 500-2000 byte között a legjobb (700-750 ms), 2000 felett pedig konstansan romlik (800-900 ms).
Ez utóbbi eredmények között lényegi különbség (szerintem) nincs, vagyis nincs értelme sokat változtatni a 8192 standard pufferméreten. (((A régi szép időkben ismert szektornyi "raw" readhez amúgy sem enged oda a rendszer)))
A pufferelt/nem pufferelt közötti különbséget sokkal kisebbnek gondoltam. Érdekes, hogy ennek ellenére nincs pufferelésre (gyári) lehetőség RandomAccessFile esetén. 20x különbség nagyon sok.Ha esetleg már valaki küzdött ezzel, és megosztaná a véleményét, nagyon örülnék.
-
WonderCSabo
félisten
-
macsaba97
csendes tag
Csodák csodája amikor reggel bekapcsoltam a gépet működöt (már tegnap is újraindítottam). Szóval visszatérve az eredeti problémához azt már sikerült megoldani hogy van egy gomb a képernyőn és azzal lehet képeket váltogatni. Ezzel a bluetooth médiaeseménnyel viszont nem nagyon jutok előbbre. Jó lenne ha valaki tudna adni egy kis kódrészletet pl egy zenelejátszóból amiben ki tudom cserélni a lejátszást a mostani gomb eseményére (következő kép).
-
macsaba97
csendes tag
Na el is kezdtem a programozgatást androidra már a barkobánál tartok de csak emulátoron. Sony xperia sp telefonomat semmi esetre sem akarja látni az eclipse és ez nagyon bosszantó.
Drivert felraktam a fejlesztői mód be van kapcsolva a telón és az usb hibakeresés is. Van valami ötletetek hogy mi lehet a baj?
-
thon73
tag
Igen, a mérés bennem is felmerült. Nem voltam biztos abban, hogy nincs egy konkrét elméleti adat - pl. az említett méretek, ezért kérdeztem. A mérés nagy hátránya, hogy könnyen lehet, h. ez az érték gépfüggő. Mellesleg - megjegyzem - puffer nélkül is észrevehetetlenül gyors, gyanítom, hogy pufferrel is az lesz. Tényleg igaz: nem kell talán minden lépést kimérni, azér' van a négy processzor...
Hm. Nekem a Java és az Android teljesen új volt, C-ben programoztam előtte (ráfordított időt tekintve: hobbiszinten). Talán furcsa, de - ennek ellenére - a natív rész akkor még nagyon távolinak tűnt, egyszerűbb volt Java-ra átteni, és még akkor sokat javítottam (pontosabban bővítettem) az algoritmuson. Az eredetit amúgy se lehetett volna átteni, a PalmOS nagyon máshogy "gondolkodott". A sebességgel most nincs gondom, a teljes szöveges keresést jó lenne natívan megcsinálni, de az eddig nem volt szükséges.
A program elkészülte után Attila megkért arra, hogy legyen bővíthető a szótár. Emiatt elég mélyen beleástam magam az sqlite-ba, most lett egy komplett front-end, ami kapcsolt táblákat is kezel. (Ez nem baj, mert egy ilyen nyilvántartó program amúgy is kellett volna, de eredetileg a szótár miatt csináltam.) Arra rájöttem, hogy ilyen speciális megoldásoknál az sqlite "kicsit" korlátozott. Az idő rövidsége miatt viszont a blog folytatására nem maradt időm, így aztán se az sqlite front-end, se a szótár doksija nem került (még) se fel, se megírásra. Szóval hiányos a "doksi", igyekszem pótolni (mert nekem is segítség), de ha bárki egy picit is érdeklődik, a kódot/adatot szívesen megosztom addig is.
-
thon73
tag
Igen, ez egy szótár, pontosabban szótár keretprogram. ITT elkezdtem irogatni egy-két dolgot, csak nem volt időm még befejezni. Viszont a program működik, sőt V.Attila is ezt használja. (csak az ő verziója fapadosan bővíthető) (((Vannak más szóanyagok is, de legalitásuk kétséges.)))
Ha röviden akarok arra válaszolni, hogy miért kell még egy szótár: mert elég könnyűnek tűnt megcsinálni, olyan functionalitást tartalmaz, amit máshol nem találtam, és úgy tudom beállítani, hogy a kezem alá dolgozzon. ((Aki szótárazott hosszú szöveget képernyőn, az tudja miről beszélek.))
"Az indexet desktopon kéne megcsinálni" - ez teljesen igaz, az androidos indexelés kísérlet volt, pont azt felmérni, hogy mennyi időbe telik. Aztán így maradt. Megjegyzem, ez egy külön app, amit csak én használok, nekem viszont fontos volt (utazás alatti fejlesztés miatt), hogy desktoptól független legyen.
A "háromféle" módból kettőről fent már írtam, de kell még egy. Nézzünk két bejegyzést: "adatbázis" és "adat-bázis".
(1) Ha ki akarod keresni, nem biztos, hogy lesz ékezetes billentyűd stb., tehát mindkettoben kell egy "ADATBAZIS"-t tartalmazó mező.
(2) Ha sorba akarod rendezni, akkor kell az ékezet, de a két bejegyzés megfelelő mezője egyforma lesz: "ADATBÁZIS", vagyis eltűnik a kötőjel.
(3) Kell az eredeti, átalakítatlan szó is, többek között azért, mert Attila szópárokat ír be, én viszont szeretném az azonos szavakat egyetlen bejegyzésba sűríteni, és ekkor az "adatbázis" és az "adat-bázis" két külön szóként szerepel.Ehhez sqlite-ban (mivel csak a standard sorbarakó lehetőségeket használhatom (((Megj: az UNICODE NEM alkalmas szótáras sorrend kialakítására, mert az pl. németben és magyarban más lesz, bár ettől még használható)))), szóval, három mezőben kell tárolnom ugyanazt a szót. Egyébként pont a kipróbálás végett készítettem egy sqlite keretet is. (A keret közel kész, de teljes anyaggal még nem töltöttem fel.)
Bocs, nem akartam ennyire eltérni a témától, bár szívesen és örömmel megvitatom az egész szótár-projektet. Eddig úgyis csak a saját elgondolásaimra támaszkodhattam, ill. most már a tapasztalatra is, mert két platformon is jól működik. ((Na jó, az egyik halott...))Sőt, ha van itt profi fejlesztő, én én annak is örülnék, ha valaki az ötleteimet megvalósítja; a költségen felül ráadásnak az ötlet is az övé lehet. De az egész onnan indult, hogy (még a Palm OS időkben) nem vállalta senki, hogy ilyesmiket fejlesszen...
P.S: ha valaki egyébként tudja az eredeti kérdésre a választ: vagyis milyen értéket érdemes BufferReader-ben puffernek megadni rövid beolvasásoknál, azt továbbra is köszönöm!
-
alacka
tag
Szép sorjában (bocsi, de androidos kezdo vagyok).
1.SDK - Android tools, 4.4.2, 4.2.2, 2.2, Extra: Android Supp Lib, Goole USB Driver. Intel HAXM telepítve,
Intel System Image kombinációt hogyan is?2. AVM/tablet - Szóval Eclipse-böl AVM helyett USB-n keresztül tudnám a tabletemen futtattni a csinálmányaimat, s nem kell átmásolgatnom, telepítgetnem (ami jelenleg gyorsabbnak tunik mint egy alacsonyabb szintu AVM-en való futattás - bár a video megosztón rendre ilyen emulátorokat látni).
3. Ha USB hibakeresés bekapcsolva, tablet csatlakoztatva, a DDMS nézetben csupa üres ablakok,
közben a fileszintu hozzáférésem (TC) is megszunt.+4. Egy, illetve dupla kattintásra, valamint különbözo irányú elhúzásokra szeretnék egy képpel muveleteket - arrébb tolni, fordítani - csináni.
Milyen eljárásokat(?) javasoltok?
OnClick listener/OnTouchListener/GestureDetector.OnDoubleTapListener? S az elhúzások?Elore is köszi az útbaigazításokat.
-
WonderCSabo
félisten
Én már egy ideje maven-nel buildelek Eclipse alatt, ADT-vel... Jól működő, bevállt rendszer, a maven minden előnyével (és hátrányával). Annyira sokat dolgozott rajta a közösség, hogy még az android libek csomagolására is kitaláltak egy kvázi-szabványt (apklib).
Erre a Google Gradlet választja az Android Studio-ban, ahelyett, hogy beszállna a maven kontribúcióba. Teljességgel érthetetlen, és a fejlesztő közösséggel szemben inkorrekt lépés. -
alacka
tag
Nagyon köszi az útbaigazítást!
Egyelőre valóban win alatt próbálkozom!
Első lépésként java 2D sprite animációval ismerkednék (bufferelt image beolvasás, képszeletek kirajzolása?),
majd valami mini adatbázis alkalmazással próbálkoznék. Szóval lehet, hogy lesz kérdésem. Egyelőre kutakodok. -
fatal`
titán
Esetleg ha PC-s emulálás:
BlueStacks vagy Genymotion (ebből az android 4.3 felejtős, crashelnek az appok a libc miatt, gondolom majd javítják, a többi ok). Mindkettő fényévekkel gyorsabb, mint akár a haxm-es cucc (leginkább átvitelben).
Nem értem egyébként, hogy miért tart percekig egy 10-15 megabájtos apk átmásolása az avd-re, ezen reszelhetnének, mert HAXM-mel amúgy jó lenne, de emiatt borzalmas.
-
alacka
tag
-
thon73
tag
És akkor a "mögötte lévő", vagyis utoljára indított Activity látszik?
Első körben kiebrudalatam a teljes DialogFragment-et. Egyszerű dialogusokkal átlátható a kód teljesen, majd meglátjuk hogy kell (kell-e egyáltalán) visszatenni. Végülis, amíg elforgatás nincs, addig minden oké...
((Egy picit más: mi a nyavajának tűnik el az EditText tartalma a DialogFragment-ben elforgatáskor? Dinamikusan adtam hozzá, itt is kéne vhogy ID-t adni neki, hogy menteni tudja?))
Bocs, közben bővült a válaszod... Megpróbálom második körben így átalakítani.
Eredetileg azt hittem, ez valami triviális kérdés, amivel csak én nem találkoztam. De ezek szerint ez nem is olyan egyszerű...
-
thon73
tag
Persze, csak az a vicc, hogy épp ezt a négy funkciót akartam egy közös Activity-be rakni, amit most visszatennék négy másikba...
(((Eredetileg maga a FileSelectActivity végezte el az import/export funkciót, mert csak arra kellett a file kiválasztása. De most ugyanezt a file-kiválasztót szeretném másra is használni (háttérben álló külső file becsatolása egy adatbázis-rekordba), és ezért "kiszerveztem". Így viszont már két emeleten lépnek be az Activity-k, egy harmadikon pedig a DialogFragment.))) Izgalmas lesz tesztelni... -
thon73
tag
Megpróbálom. Végiggondolva a lehetőségeket, mindig a visszatérésnél van a gondom. Az Activity ugyanis az onActivityResult-ba tér vissza (ami a MainActivity-ben van), ill. a DialogFragment is az Activity-t kapja meg, tehát oda mehet vissza.
Namármost: Vagy szétosztom mindkét helyen a négy további osztály irányába az eredményeket (pl. a rquestCode alapján)
Vagy mégis egyszerűbb (csak áttekinthetetlenebb), ha az egyes eseményeket itt (vagyis a visszatérési metódusokban) kezelem le.
Hm. Emellett még meg kell tartani egy csomó paramétert, ami ugye vagy egy "utazó" Uri, de valószínűbb, hogy kellene csinálnom egypár változót (pl. egy retained Fragmentben), és a kérdések során ezek kerülnek egymás után feltöltésre. Amikor az utolsó kérdés is teljesült, akkor ezen változók alapján tudom végrehajtani a feladatot (pl. az import-ot). A változók talán azért előnyösebbek, mert segítenek, ha egy lépéssel vissza kell lépni. ((Mert pl. a FileSelector-nak meg kell kapni a "címsort" is, vagyis, miért válasszunk ki egy file-t.))
Lehet, h. kicsit zavaros, bocs. De bennem valahogy talán kezd körvonalazódni. Köszönöm a segítséget!Kicsit még kezdő vagyok ebben a szervezésben, túlnőtt rajtam a program (önmagában már működő 31 class, 4 funkcióval, és ez tenne rendet közöttük), de majd belerázódom...
-
thon73
tag
Köszönöm! Akkor nekiállok bogozgatni...
Ezek szerint minden egyes lépés más és más, egymástól távol eső kódba kerül, ráadásul közöttük még az egész hóbelevanc újra is indulhat.
Végső soron akkor ezek között a részek között a file Uri-t kell körbe-körbe küldözgetnem. Abból le tudom vágni a nevet, a path-ot, az external drive-ot is (mármint ez utóbbit akkor, ha nem kell).
((Hogy teljes legyen a boldogságom, a MainActivity már most is négy "beszélgetős" funkciót tartalmaz, és közülük az import a legegyszerűbb...))Kicsit égnek áll a nem létező hajam, de majd kifésülöm (legalább a kódot)
Köszönöm!
-
thon73
tag
Köszi, ez a "középutas" ötlet kiváló.
Eredetileg AlertDialog-ot használtam (és igen, elég), csak:
- elfordítás nem megoldott, amit úgy oldottam meg, hogy DestroyView (ha jól emlékszem) magasságában bezártam a dialogust. (na jó, ez apró hiba, minek állandóan forgatni a gépet!
- tetszett az ötlet, hogy a terjedelmes kódból kikerülnek a dialogusok, bár (mivel a dialogushívás az activity törzsön keresztül történik) ki-be kell ugrálni az egyes programrészek között.Ettől függetlenül, egy sima confirmation dialog esetén lehet, hogy tényleg célszerűbb az AlertDialog.
-
-
-PLevi-
senior tag
Köszönöm!
Szóval ha jól értem, a megfelelő módosítás után lehetne telepíteni, de amint olyan funkciót szeretnék használni, amihez 4.0-s API kell, jönne a Force Close?(#1387) hunfatal
Értem. Túl sok reményt én sem fűzök hozzá, csak nem hagyott nyugodni a gondolat.(#1391) kisguly
Link
Blade esetében külön, fájlrendszer nélküli partíció van fenntartva a számára a ROM-on. -
rgeorge
addikt
Abszolút rendeltetésszerű lenne, hogy olyan telefonon, ahol kétféle external storage van, mindkettőt elérhessem, és ugyanolyan könnyedén. Az Android csak az external storage fogalmat ismeri és publikálja, az meg általában a belső. Nyilván konkrét eszközön van más módszer is, engem az általános érdekel.
-
dmc
aktív tag
De mint írtam letöltöttem a 64 bites javat fel is telepítettem majd ezek után az Android SDK Managert próbáltam felrakni aminél felugrott egy fekete ablak és kész onnantól se kép se hang nem volt majd feltettem itt a kérdést és érkezett rá választ majd azt kipróbálva újra elindítva az SDK Managert elindult és fel is települt szépen.
Akkor mit csináljak?
MI a megoldás? -
lordjancso
senior tag
Igen, ez a megoldás már közelít, de még így sem tökéletes:
Az adaptert eddig az onCreate-ben állítottam be. Mivel muszáj az adapter beállítás előtt meghívni az addHeaderView-t, így az onCreate-ből ki kellett vennem az adaptert.
Az onCreate után meghívja az onCreateView-t. Itt elkérek egy referenciát a headerbe beállítandó layoutra, majd inflatelem a view-t, amiben a ListView-m van és ezt beállítom visszatérési értéknek.
Ezután az onActivityCreated-ben tudom beállítani az előzőleg elkért header referencia alapján a headert, majd beállítani az adaptert.
Elindítom az alkalmazást és minden szép és jó, egészen addig amíg el nem kezdek navigálni.Az alkalmazásomban három darab fragment van egymás mellett egy ViewPager-ben.
Az első fragment a szóban forgó ListFragment, a másik kettő egyelőre sima Fragment.Ha elnavigálok a második fragmentre, majd vissza, akkor még minden oké.
Viszont ha elnavigálok a harmadik fragmentre, majd vissza az elsőre, akkor újra meghívja az onCreateView és onActivityCreated metódusokat és ekkor elszáll hibával.
Plusz ugyan ez van forgatásnál is.Találtam is erről egy StackOverflow bejegyzést.
-
bucsupeti
senior tag
Karma: Bocs, nem olvastam végig, hogy nem akarsz külső rendszert bevonni.
Márpedig az email nem így működik, úgyhogy szerintem valamelyik kritériumodból engedni kell.Igen tudom hogy az email nem így működik...
A kérdésemet átfogalmazom:Megoldható-e úgy a levélküldés a saját programomból, hogy a beállított Exchange fiókon keresztül felhasználói interakció nélkül küldöm a levelet?
-
-
kemkriszt98
tag
Kicsit át lett írva de ugyan az a hibaüzenet :
-
lordjancso
senior tag
Az a baj, hogy nem egészen látom ennek a rajzolásnak a működését, tehát eléggé sötétben tapogatózom és már kezdem elveszteni a fonalat, hogy mier is gondolsz pontosan.
Az UrlDrawable osztályban felüldefiniáltam a setBounds metódust, de nem tudom, hogy az osztály drawable változójával mit kezdjek a setBounds-on belül.
Annyit sejtek erről a setBounds-ról, hogy a 4 int paraméteréről, hogy az első kettő a kép bal felső sarkának x és y koordinátáit adja meg, a második kettő pedig a jobb alsó pont x és y koordinátáit.Alapvetően az UrlImageParser osztályban az onPostExecute-ban történik átméretezés, mert a result.getIntrinsicWidth() és a result.getIntrinsicHeight() kisebb számoakt adnak vissza, mint a kép eredeti mérete, csak nem eléggé kicsinyíti le.
Azt nem tudom, hogy mi alapján kicsinyít? Egy 1024x768-as képből 680-valamennyi széles képet csinált (magasság aránytartóan ehhez megfelelőnek 500 valamennyi), viszont a kijelzőm 600x800-as méretű, így a képből egy kis rész kilóg.
Új hozzászólás Aktív témák
Hirdetés
- sziku69: Szólánc.
- Milyen légkondit a lakásba?
- Luck Dragon: Asszociációs játék. :)
- Kerékpárosok, bringások ide!
- Autós topik
- One otthoni szolgáltatások (TV, internet, telefon)
- Kínai és egyéb olcsó órák topikja
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Linux kezdőknek
- További aktív témák...
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- MikroTik CCR1009-7G-1C-1S+ Cloud Router
- Külföldi csomagszállítás Packeta csomagpontokon keresztül!
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged