Hirdetés
Új hozzászólás Aktív témák
-
SektorFlop
aktív tag
válasz
trisztan94
#1191
üzenetére
Igen tudom, csak gondoltam hátha van mégis valami elmebeteg megoldás. Bár eddig nem találtam semmit, és úgy hiszem nem is nagyon fogok:S
-
trisztan94
őstag
Szerintem ez is az Amoled saját cucca, bár lehet, hogy most hülyeséget írok.
Fentebb is írtam, de próbálj meg felrakni egy CyanogenMod-ot, nekem Galaxy Nexus-on az volt és ott tényleg lehetett állítani ezeket, de az is Amoled kijelzős volt.
Más kijelzős mobilon még nem láttam iylet, de nem is nyomkodtam sok mást

-
Pecc
őstag
válasz
trisztan94
#1197
üzenetére
Én erre gondolok.
Ezt úgy tudom elképzelni, mint egy csúszkát egy amd vagy nvidia driverben, ahol a standard a 0 a dynamic a +50 a movie pedig a -50 érték. Mivel kipróbáltam, standardon tényleg sokkal fakóbb, színtelenebb, mellé téve a saját nem s amoledes készülékemet a fehéregyensúlyon kívül számottevő különbség nem volt.Értem amit próbálsz leírni, de sajnos nem lelek válaszra hozzászólásaidban. Azért köszi

-
Pecc
őstag
válasz
trisztan94
#1195
üzenetére
Nem az teszi, mert ha "normálra van állítva" nincs bekapcsolva ez a dynamic valami, akkor teljesen megegyezik egy "átlagos" kijelzővel, kipróbáltam. Pl, ott a galaxy s3 mini, abban nincs ez a mód, és az is super amoled mégsem olyan színes, hanem ugyanolyan, mint a többi. Ezért érdekelne, hogyan lehet ezt elérni akár a driverben vagy valami apkval, amit a samsung csinál.
-
-
Pecc
őstag
Sziasztok!
Jópár topicban érdeklődtem már de senki nem tudott érdemi választ adni.
Megfigyeltem, hogy a samu galaxy s tipusú készülékei kijelzője sokkal színesebbek, mint a "többi". Gyakorlatilag ha egymás mellett van egy mezei kijelzős és egy samu s2 az előbbiek szinte olyanok, mintha fekete fehérek lennének. Van a menüben a megjeleitésnél olyan mód, a neve nem jut eszembe ami rettentően megnöveli a kotrasztot és a színtelítettséget, ha ez ki van kapcsolva és alapállásban van ugyanolyan, mint a "többi" kijelző képe. Valoszinüleg olyan dolog történhet, mint egy pc-n a vga driverben való színállítás, kontrasztnövelés stb. Kérdésem van e lehetőség, ilyen beállítás megváltoztatására bármilyen módon, mint amit ez a gyártó eszközöl a romokon?Köszi

-
wis
tag
Sziasztok!
Az mitől lehet, hogy csak "Run" indításkor jelenik meg a stacktrace a LogCat-ben? "Debug" esetén pedig nem és így nem látom a kivételhez tartozó üzenetet.
-
doc
nagyúr
valaki esetleg tudna segiteni AdMob ugyben?
Van egy C++ -ban megirt appom, es szeretnem valahogy odabiggyeszteni az AdMob reklamot.
Addig sikerult eljutnom, hogy a fokepernyom helyett egy fekete kepernyot kapok, alul egy pici szurke teglalappal a reklam helyen. Sajna Javaban nagyon gyer vagyok, szoval eleg nehezen haladok.Eddig ennyim van:
C++:
#ifdef __ANDROID__
#include "jni.h"
#include "android_native_app_glue.h"
void showAds()
{
JNIEnv *env = static_cast<JNIEnv*>(SDL_AndroidGetJNIEnv());
jobject activity = static_cast<jobject>(SDL_AndroidGetActivity());
jclass cls = env->GetObjectClass(activity);
jclass localcls = reinterpret_cast<jclass>(env->NewGlobalRef(cls));
jmethodID showAds = env->GetStaticMethodID(localcls, "showAdPopup", "()V");
env->CallStaticVoidMethod(localcls, showAds);
}
#endifJava:
// Our popup window, you will call it from your C/C++ code later
public static void showAdPopup()
{
//if(adsinited)
//{
// return;
//}
if(adView!=null) {
_activity.runOnUiThread(new Runnable() {
@Override
public void run() {
adsinited = true;
// Out popup window
popUp = new PopupWindow(_activity);
// This is the minimum size for AdMob, we need to set this in case our target device run at 320x480 resolution (Otherwise no ad will be shown, see the padding kill below)
popUp.setWidth(320);
popUp.setHeight(50);
popUp.setWindowLayoutMode(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popUp.setClippingEnabled(false);
layout = new LinearLayout(_activity);
mainLayout = new LinearLayout(_activity);
// The layout system for the PopupWindow will kill some pixels due to margins/paddings etc… (No way to remove it), so padd it to adjust
layout.setPadding(-5, -5, -5, -5);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 0);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(adView, params);
popUp.setContentView(layout);
_activity.setContentView(mainLayout, params);
AdRequest adRequest = new AdRequest();
// Enable this if your are testing AdMob, otherwise you'll risk to be banned!
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
_activity.adView.loadAd(adRequest);
// Show our popup window
popUp.showAtLocation(mainLayout, Gravity.BOTTOM, 0, 0);
popUp.update();
}});
}
} -
trisztan94
őstag
válasz
SektorFlop
#1190
üzenetére
A Safe mode lényege az (is), hogy ne indulhasson el third-party alkalmazás, így nemigen hiszem, hogy megvalósítható.
-
SektorFlop
aktív tag
Egy szokatlan témával fordulok hozzátok, esetleg valaki tud olyan megoldást ahol az alkalmazás Safe mode-ban is elinduljon?
-
thon73
tag
válasz
sztanozs
#1188
üzenetére
Az előző hozzászólások alapján megpróbálom átalakítani az egész osztályt stream alapúra. Jelenleg a getChannel.position()-nal küzdök, amit a hozzászólásod alapján találtam lehetséges megoldásnak.
A RAF - C-s hasonlóságok miatt - nagyon szimpatikus volt, és eddig jól is működött. Én ugyan a RAF-ot "byte" alapon használtam - vagyis se nem küldtem, se nem olvastam semmit, ami 255 felett van. A teljes kódolást/dekódolást ebből a kvázi "byte" alapú folyamból végeztem el. Amúgy:
int read()
Reads a single byte from the current position in this file and returns it as an integer in the range from 0 to 255.Így nem lesz persze hiba, de logikailag valóban helyesebb byte-folyamként fogadni, és a rendszerrel átalakíttatni az UTF8 szöveget. És a RAF másik hátránya: tapasztalom, hogy pufferelt, csak sehol nem látom, hogy mekkora pufferrel, és az hogyan állítható be.
Úgyhogy fájó szívvel búcsút mondok a RAF-nak (és a C-s emlékeknek), és igyekszem Java-style I/O-t használni...
-
Amúgy hozzáadásképp, a Random Access (DataInput) nem hagyományos UTF-et használ, hanem MUTF-et - persze ez is csak a 4 karakteres (extended) set-re vonatkozik - erre is érdemes figyelni: [link]
De amúgy szerintem van belső parsere valahogy az kellene rávenni, hogy feldolgozza a szövegedet.
Ja és ha indexelsz, akkor eltárolhatod a szöveghosszt is (vagy kivonod a következő indexből) és tudni fogod, mekkorának kell lennie maximum a buffernek. -
thon73
tag
válasz
sztanozs
#1186
üzenetére
A RandomAccess akkor is nagyon jól használható, ha a file tartalma indexelve van. Itt pont ez a helyzet: az első olvasás után minden bekezdés pozíciója ismert, a programnak csak a megjelenő bekezdéseket kell feldolgoznia.
A Stream-ek között nem találtam könnyen pozícionálható megoldást, csak a reset/skip párost. RAF esetén viszont rögtön adott ez a lehetőség; ráadásul a C-hez (és én C-ből akartam áthozni a programot) nagyon hasonló módon.
Csak az utf-8-on akadtam el (pontosabban indultam a fenti szálakon). ((Az eredeti adatok pdb-ben voltak))A pozícionálható Stream az kiváló megoldás lenne. ((A jelenlegi megoldás egy olyan "stream" osztály lett, ami háttérként RAF elérést használ, így pozícionálható is, meg a read() révén "stream" is. Ráadásul Utf8-at olvas.))
(((Az UTF-8-ról annyit érdemes megemlíteni, hogy az első közel 65 ezer karakter a Basic Multilingual Plane. Ez nem csak az összes ékezetes betűt, hanem az összes ismert nyelv betűit tartalmazza. Ebben az a nagyszerű, hogy 16 biten tárolható, vagyis épp egy karakteren. Ami ezen felül van, ahhoz UTF-16-on már két karakter kell. Az UNICODE saját dokumentációja állítja, hogy ez a rész nem kellőképpen tesztelt és megvalósított. Az ANDROID sem következetes, uis. ezt néha egyetlen 4 byte-os int-en ábrázolja, néha két egymás utáni karakteren. Mivel nekem még a beszélt nyelvek közül sem kell az összes, ezért a dekódoló algoritmus figyeli a non-BMP karaktereket, de helyettük egy sima '*' hibajelölést tesz, ami bármilyen kódolásban ábrázolható. Nem lenne nehéz egyébként a dekódolást erre a részre sem kiterjeszteni, csak akkor az egész program működését is ki kellene terjeszteni. ASCII-ról nem volt nehéz ITF-16-ra áttenni, de ha néhol két karakternyi ábrázolással kellene számolnom, az megnehezítené a dolgot.)))
Bocsánat egyébként, ha nagyon triviálisakat kérdezek, de az Android/Java párost csak most tanulom. Némely. engem érdeklő részbe már mélyen beleástam magam, de a legtöbb részt egyáltalán nem ismerem. Ezért örültem az előző tanácsoknak is, mert így új koncepcióban készítettem el a megfelelő részt.
-
Random access-t nem erre találták ki, hanem jól strukturált fájlokra, ahol a mező/rekord-szélesség ismert.
BTW, Stream-ben is tudsz pozicionálni.Más: Ha UTF-et használsz, akkor ne legyenek olyan prekoncepcióid, hogy nem fogsz nem base charset-et használni, mert ha később mégiscsak szeretnéd, akkor aztán igazán szívás lesz az ékezetes karaktereket belehackelned a saját algoritmusodba...
-
thon73
tag
Hadd folytassam még az elmélkedést:
Mi a helyzet a RandomAccessFile() eléréssel? Ott nem tudok stream-et használni, vagy nem tudok ugrálni a file-ban.
Vegyünk egy egyszerű példát: sd-kártyára mentett, UTF-8 kódolású, de igen hosszú szöveg egy részét szeretném beolvasni, és a képernyőre írni. (Vagyis egy egyszerű olvasóprogram.) Korábbi olvasásból tudom, hogy hol vannak a bekezdéshatárok, így a feldolgozást tudom a szöveg "közepén" kezdeni.Ha az előző logikát követem, akkor kell készítenem egy saját byte-stream-et, mely a bemenetét a raf.read()-ből veszi, és azt az előző módon adja a konverternek. Ennek az az előnye, hogy minden, android által ismert dekódolást elvégeztethetek.
Vagy - ha biztos vagyok abban, hogy csak BasicMultilingualPlane-t használó Utf8 szövegem van - mégiscsak egyszerűbb magát a decoder-t megírni. Az pont a szükséges byte mennyiséget olvassa ki a forrásszövegből, és karakterenként visszaadja.
Vagy (ezt még nem csináltam): beolvasok egy buffernyi byte-ot, majd valamekkora részt feldolgozok belőle. A végén szinte biztosan egy félbevágott karakter lesz. Átpozícionálom a beolvasást a feldolgozott rész végére, és megyek tovább. Vagy a levágott részeket beteszem a puffer elejére, és onnét folytatom az olvasást.
Mindegyik esetben egy jelentős saját részt kell alkotni, holott egy igen triviális feladatról van szó. Ezt meg tudom kerülni valahogy szabványos rutinokkal?
Ill. a fenti megközelítések közül melyik lenne szerintetek a legeffektívebb/legegyszerűbb??((Az előzőekben egy backup-ként szereplő exportról beszéltünk, ahol a stream kiváló megoldás, mert nem kell benne ugrálni. Az utóbbi egy korábbi probléma, ahol nem ez a helyzet. De kíváncsi lennék a véleményetekre.))
-
thon73
tag
Hátha mást is érdekel, itt a rövid logikája a próbának; egyszerűség kedvéért file helyett stringek, hibakezelés és optimalizálás nélkül. 'c' átalakítása az első ciklusba, a kiírás elé kerülhet. (ed1-ed2-ed3 egyszerűen három EditText. ed2 csak azért kódol ISO-8859-1-et, hogy lássam, hogyan is kerülnek kiírásra a byte-ok.)
Kifelejtettem a lényeget: ed1 (UTF-16 String) -> outputStream==inputStream (UTF-8 byte-array) -> ed3 (UTF-16 String). Tehát oda-vissza elvégzi az átalakítást, és nem String-gel (bár abból indul), hanem Character-folyammal dolgozik.int c;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
StringReader stringReader = new StringReader( ed1.getText().toString() );
while ( (c=stringReader.read()) != -1 )
{
outputStreamWriter.write( c );
}
outputStreamWriter.close();
ed2.setText( outputStream.toString("ISO-8859-1") );
ByteArrayInputStream inputStream = new ByteArrayInputStream( outputStream.toByteArray() );
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
StringWriter stringWriter = new StringWriter();
while ( (c=inputStreamReader.read()) != -1 )
{
stringWriter.write( c );
}
stringWriter.close();
ed3.setText( stringWriter.toString() );Érdekes, hogy keresgélés közben StraemReader/Writer osztályokat is átfutottam, de nem ugrott be, hogy erre van szükségem. ((Hát, látszik, hogy nem a javaba "nőttem bele", ráadásul évekig nem írtam semmi komolyat.
))A replaceEach is jó ötlet, (és ezzel visszajutottunk a túloptimalizáláshoz.) Ha legyártok egy új string-et, ami már az átalakított részeket tartalmazza, akkor áttekinthetőbbé válik a kód, ill. a fenti helyett a mentést is egy sorban meg tudom oldani. Nem nagy ár ezért az új string létrehozása, akkor sem ha több ezerszer történik meg.
Köszönöm a segítséget, az eredetitől gyökeresen eltérő logikájú kód született, de sokkal szebb, és jobb. Nem végeztem még méréseket, de nem tűnik nagyságrendekkel lassúbnak. (Gondolom, az SD kártya sebessége lesz a meghatározó...)
-
Karma
félisten
Pont ellenkezőleg, köszönöm a hosszú okfejtést. Segít jobban kontextusba helyezni a dolgokat

Az utolsó ponton méláztam még egy kicsit, végülis az a leginkább kézzel fogható; nem kell konvertert írnod, ha az OutputStreamWritert felparaméterezed egy encoderrel: Charset.forName("UTF-8").newEncoder()
-
thon73
tag
((A new line/tab átalakítást csak példának írtam, (és ebben az esetben az első pont teljesen jogos) Esetemben egy kicsit összetettebb dologról van szó: tényleges szövegfeldolgozás történik, a mentett oldalon - értelmezést könnyítendő - a rövid bejegyzéseket mintegy kibontja a program, és egy hosszú file-ban tárolja. Igazából ez is egy decoder, csak épp elég speciális. De ez a programozási probléma szempontjából lényegtelen.))
A röviden pont történt meg most (vagyis megoldást kerestem), és a választ is köszönöm: És meg is fogadom, (2. pont), mert igazad van: nem foglalkozok a teljesítménnyel. Én is gondoltam arra, hogy ha a teljesítmény ilyen fontos tényező, akkor ezt a részt natívan kellene elkészíteni, de ebben (még) nincs tapasztalatom. Egyébként nem olyan félelmetesen hosszú a feldolgozás: vmivel több, mint 200e bejegyzésre 20-40 perc jelenleg

((Arra az indiszkrét kérdésre, hogy akkor miért a telefonom csinálja, csak azt tudom mondani: az mindig nálam van. De egyébként a teljes adatbázist csak egyszer kell megcsinálni, a többi meg már rövid...))((A 3. pontban is nagy igazság van, bár egyszer beleástam magam az unicode-ba, és írtam konvertáló algoritmust is, tehát az van. Az UTF16->UTF8 irány elég egyszerű, hiszen ott (felső részek kivételével) minden karakter létezik. A fordított irány az érvénytelen szekvenciák miatt egy kicsit izgalmasabb.
A gond egyébként pont abban van, hogy az UTF8 nem egyforma hosszú részekből áll (na persze ez az előnye is), és ez - saját kód nélkül - megnehezíti a szövegfeldolgozást. A legegyszerűbb példa: nagyon nehéz effektív UTF8 beolvasást csinálni, mert nem tudod, hogy pontosan hány byte-ot kell/lehet a pufferbe olvasni, és ezért pl. vagy "görgetni" kell a puffert, vagy figyelni a végén az eltört karakterekre. Ezért is gondoltam, hogy egyfajta stream-szerű beolvasás (szerű, mert UTF8 karakterenként olvas/ír) egyszerűsíteni az életet, de még nem találtam ilyet készen. Ettől függetlenül masszívan igaz, hogy meglehetősen túlkomplikálja a programot. Bocs a hosszú okfejtésért.)) -
Karma
félisten
Három főbenjáró bűn lebeg a levegőben ennél a történetnél:
1) Fel akarod találni újra a kereket. Rengeteg különböző, de jure vagy de facto szabványos alternatív kódolás van arra, hogy az ilyen karaktereket könnyen olvasható formára hozd, nem kell újon törnöd magad(*). Pl. pofonegyszerű használni az URLEncoder osztályt, vagy a Commons Lang StringEscapeUtils osztályát.
2) Hacsak nem mérési eredményeid vannak arról, hogy a vázolt megközelítésed lassan működik és ez az egykarakteres Stringek miatt van, ne állj neki túlkomplikálni. A premature optimization esete állhat fenn.
3) A Unicode olyan, mint a medve: nem játék. Persze, magyar karakterekkel el tudsz lavírozni akár egy kézi look up table-lel amikor az UTF-8 "konverteredet" írod, de a helyes megoldás bőven meghaladja a "fél délután alatt a garázsban összedobom" szintet. Gondolok pl. a surrogate-ek kezelésére, ami UTF-16-ban két karakter, UTF-8-ban meg pl. három...
(*): Kivéve persze, ha valaki más követte el ezt a hibát egy szerveroldalon, és ahhoz kell idomulnod. Ez esetben tekintsd az első pontot tárgytalannak.
Szóval röviden: ha nincs valami életbevágóan fontos és pontos oka ennek, keress valami más megoldást.
-
thon73
tag
válasz
sztanozs
#1173
üzenetére
Igen, ez világos. Igyekeztem a kérdést a problémás részig egyszerűsíteni, ebből a félreértés. De a szélesebb problémára is szívesen fogadok ötleteket:
Adott egy String, ami EditText-ből, vagyis a felhasználótól származik (és egy adatbázis tárolja). Ezt a Stringet szeretném UTF-8 kódolású txt file-ba menteni. Ez idáig egyszerű, és két sorban megoldható.
DE!
Mentés előtt a String-en utólagos feldolgozást végez a program, néhány részét cseréli. (Gondoljunk pl. arra, hogy pl. tab-ot \\t-re, new-line-t \\n-re, vagy esetemben speciális, de olvasható tag-okat szúr be.) Erre a legegyszerűbb mód, ha StringReader-ként kiveszem a karaktereket, átalakítom, és az eredményből egy új folyamot hozok létre. A karakterek 99%-a változatlanul (vagyis egy karakterként) fut tovább, de néha a karakter helyett egy rövid szövegrész megy ki. Nem akartam új String-et készíteni, hanem azonnal az UTF-8 típusú kimenetre küldeném az adatokat.
Eddig csak olyan megoldást találtam, ami String-et, vagyis hosszabb szöveget alakít UTF-8-ra. Az 1%-nyi részben ez tökéletes, de 99%-ban ez a String csupán egyetlen karakter hosszú lesz. Van vajon erre frappáns megoldás, vagy egyszerűbben járok egy UTF-8 kódoló megírásával?
Vagy esetleg lehet-e az egész gondolatmenetet előnyösebben elrendezni? -
UTF16-ról nincs értelme karakterenként UTF8-ra konvertálni, mert a két formátum teljesen különbözik egymástól.
Ha az egész string-re szükséged van, akkor az egészet úgy ahogy át kell konvertálni, mert az utf16 2-byte-os (illetve 2*2 byte-os a kiegészítő karakterkészletekre) reprezentáció, az utf8 pedig dinamikusan változó 1-4 byte hosszú reprezentáció. -
szarkazsolt
csendes tag
Sziasztok!
Elkezdtem tanulni ezt a nyelvet, de feladtam. Tudna nekem valaki segíteni abban, hogy egy konkrét nem bonyolult programot megírjon nekem ?
Az egyik programozó könyvben találtam is erre egy mintaprogramot, de már azzal is nehézségeim adódtak.
Szóval, fényképet szeretnék készíteni, úgy hogy a fényképre rárakja a gps koordinátát, illetve még egy két dolgot majd ezt elküldi egy emailre.
Üdv: Zsolt -
thon73
tag
Még egy kérdés. más témában:
EGYETLEN karaktert kell Character típusról (UTF-16) UTF-8-ra konvertálnom (mármint egyszerre egyet, de nem teljes stringet). Mi szerintetek erre a leggyorsabb/legegyszerűbb módszer?
(A String konvertálása ok, csak szerintem az nagyon pazarló, ha csak külön karakterek átalakításáról van szó.) -
thon73
tag
Kérdés: A FragmentManager-ben tárolt Fragmentek megjelenési sorrendjét miként lehet megváltoztatni?
Issue 31116 problémába futottam bele. A készülék elfordítása után az átfedő Fragmentek nem a megfelelő (eredeti) sorrendben jelennek meg, ezért az utolsó, DialogFragment "alulra", a többiek mögé kerül.
Megpróbálkoztam a getChildFragmentManager() használatával, vagyis a DialogFragment-et is egy Fragment nyitná meg, de ebben az esetben elforgatáskor a DialogFragment - hibaüzenet nélkül - eltűnik. Ettől eltekintve ez működik.
A másik ötletem, hogy minden Fragment-et az Activity kezel, és minden alkalommal újra felépíti a teljes miskulanciát. Ez csak azért rossz, mert eddig mindent meg tudott oldani maga a rendszer, csak az utolsó, Igen/Nem kérdés kezelését nem.
A harmadik - és eddig legjobbnak tűnő módszer -, hogy egy hagyományos Dialog ablakot nyitok meg a Fragment-ből. Kétségtelenül ez a legegyszerűbb. Az elforgatáshoz viszont itt is külön kód kell.
Nem tudtok vmi. ennél egyszerűbb megkerülő módszert erre a hibára? Köszi!
-
SektorFlop
aktív tag
válasz
SektorFlop
#1166
üzenetére
Közbe rájöttem, nem az adapterrel volt baj, hanem a layout-ban nem adtam meg fix széllességet a elemeknek.
-
thon73
tag
No, kiteszteltem, hogyan működik. Ha a Frgamentben egy View objektum értéket kap, akkor a hozzá tartozó View mögötti objektum megmarad az életciklus végéig, tehát írható. A TextView-t még az onDestroy-ban is tudtam írni.
Az más kérdés, hogy az onDestroyView magasságában a rendszer elbontja az egész View struktúrát, tehát írhatom az egyes objektumokat, csak megjelenni nem fog semmi.
Az onCreateView viszont újraindul az életciklus elején, és - normál megoldás esetén - minden View objektumnak újra (new használatakor új) értéket ad.A lényeg, hogy nem kell külön ellenőrzés, a Fragment View objektumai az első onCreateView után bármikor írhatóak (az UI threadról), bár néha (onDestroyView és onCreateView között pl.) a kiírt érték nem jelenik meg; ill. egy adott View-ra hiavtkozó objektum megváltozhat (az onCreateView ismételt lefutásakor).
Ez némileg egyszerűsítette a kódomat...
-
thon73
tag
válasz
WonderCSabo
#1160
üzenetére
Időközben megtaláltam miért kell konstruktort készíteni DialogFragment-hez. A rendszer készít default konstruktort, de az érvényességi tartománya az osztályéval fog megegyezni. Itt viszont public konstruktor KELL. Másrészt, ha van paraméterezett konstruktor, akkor nem készül üres.
Vagyis:
public osztályban, ahol nincs konstruktor, ott nekünk sem kell készíteni.
Nem public DialogFragment-nél, vagy ha van paraméterezett konstruktor, akkor kell készíteni public jelzővel és paraméter nélkül.
Talán másnak is segít ez.De van egy másik elméleti kérdésem: Van egy Fragment (az egyszerűség kedvéért onRetainInstance(true), és ebben van egy TextView. Egy háttérszálon futó folyamat időnként kiüzen az UI szálra, és innen írja a TextView-t. Mikor lehet ezt büntetlenül megtenni? Melyik életciklusok között, vagy mit kell ellenőrizni? Vagy teljesen mindegy, akkor is írhatja, ha pl. a Fragment nem is látszik, vagy dettach-olva van? Van erre valami szabály?
Köszi! -
SektorFlop
aktív tag
Hagyom is, nem találtam én se semmit a neten.
Viszont még egy dolog, van egy GridView, ami néha a görgetés után furán viselkedik. pl. legörgetem majd miután vissza görgetem eltűnik az egyik elem, vagy túl lehet görgetni, mintha "leszaladna" róla minden(bár elég látványosan csinálja, de még nem kellene
).public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(layout, parent, false);
}
tvAppLabel = (TextView) convertView.findViewById(R.id.tvAppName);
ivAppIcon = (ImageView) convertView.findViewById(R.id.ivAppIcon);
ivAppStatus = (ImageView) convertView.findViewById(R.id.ivAppStatus);
int id = Integer.parseInt(Ids[position]);
try{
tvAppLabel.setText(ApplicationModel.GetbyId(id).AppLabel);
if (ApplicationModel.GetbyId(id).AppSatus != null) {
if (ApplicationModel.GetbyId(id).AppSatus == true)
ivAppStatus.setBackgroundResource(R.drawable.app_disabled);
else
ivAppStatus.setBackgroundResource(R.drawable.app_enabled);
}
if (ApplicationModel.GetbyId(id).AppIcon != null) {
ivAppIcon.setImageDrawable(ApplicationModel.GetbyId(id).AppIcon);
}
}catch(Exception ex){
CatchError(ex.toString(), context);
}
return convertView;
} -
Karma
félisten
válasz
SektorFlop
#1164
üzenetére
Szerintem azzal nem nagyon tudsz mit csinálni, hiszen a listaelemeket le kell gyártani...
StackOverflow-n mondjuk láttam egy olyat, hogy ha a listának a layout XML-ben adsz egy cacheColorHint attribútomot, akkor sokkal többet GC-zik.Tehát ha esetleg állítottál ilyet be, vedd ki.
-
#89874944
törölt tag
Sziasztok!
Használja itt vki az SL4A-t pythonhoz? Feltettem a python 2.6.6-ot, eclipse-hez a python plugin-t, de amikor importálnám az android-ot azt írja unresolved import: android

Egy leírásban az van, hogy tegyük path-ra a python-t (android debug bridge - path). Mit jelenthet ez?
Eddig amiket csináltam:
A parancssoron python - hello world ment.
Android Device Manager fut.
Eclipse PyDev plugin -> OK.
Eclipse phyton module "hello world" -> OK.
SL4A phyton interpreter -> OK.és akkor itt van a gond...
Eclipse azt mondja Unresolved import:android
pydev debugger: starting
Traceback (most recent call last):
File "C:\Users\Tibi\Desktop\adt-bundle-windows-x86_64-20130917\eclipse\plugins\org.python.pydev_2.8.2.2013090511\pysrc\pydevd.py", line 1446, in <module>
debugger.run(setup['file'], None, None)Előre is köszi a segítséget.
Üdv Tibi
-
Karma
félisten
válasz
SektorFlop
#1161
üzenetére
Ha esetleg nem így lenne, csináld meg úgy az adapteredet, hogy újrahasznosítsa a View-kat, ne pedig minden egyes lépésnél újat hozzon létre. A getView metódus convertView paraméterében beeső Viewt tudod erre használni.
-
SektorFlop
aktív tag
09-28 12:48:05.610: E/dalvikvm(13194): GC_FOR_ALLOC freed 350K, 43% free 9531K/16519K, paused 2ms+2ms, total 26ms
09-28 12:48:05.660: E/dalvikvm(13194): GC_CONCURRENT freed 11K, 29% free 11823K/16519K, paused 12ms+2ms, total 38ms
09-28 12:48:07.170: E/dalvikvm(13194): GC_CONCURRENT freed 490K, 27% free 12224K/16519K, paused 14ms+6ms, total 68ms
09-28 12:48:07.900: E/dalvikvm(13194): GC_CONCURRENT freed 459K, 24% free 12681K/16519K, paused 13ms+16ms, total 72ms
09-28 12:48:08.420: E/dalvikvm(13194): GC_CONCURRENT freed 580K, 23% free 12850K/16519K, paused 16ms+26ms, total 104ms
09-28 12:48:13.250: E/dalvikvm(13194): GC_CONCURRENT freed 455K, 21% free 13101K/16519K, paused 14ms+14ms, total 71ms
09-28 12:48:35.120: E/dalvikvm(13194): GC_CONCURRENT freed 451K, 20% free 13303K/16519K, paused 13ms+24ms, total 75ms
09-28 12:48:37.510: E/dalvikvm(13194): GC_CONCURRENT freed 282K, 18% free 13618K/16519K, paused 15ms+14ms, total 97msEzekkel tudok valamit, csinálni? Amikor megnyitok egy ListView, vagy elkezdem azt görgetni akkor dobálja.
-
WonderCSabo
félisten
De akkor miért készít egy csomó példa expliciten public konstruktort? Az üres, public, alapértelmezett konstruktor nem készül el automatikusan az osztályhoz?
Amennyiben te magad deklarálsz konstruktort, akkor a default nem fog generálódni. Amennyiben nem deklarálsz semmilyen konstruktort, akkor igen.
-
thon73
tag
válasz
WonderCSabo
#1157
üzenetére
Köszönöm, rengeteget tanultam! Sok példát elolvastam, de a static factory method kifejezést egyik sem említette, (csak használta.) De én nem ismertem, úgyhogy köszönöm!
Még egy kérdés: Ha jól látom, akkor általában static factory method esetén érdemes "elrejteni" a konstruktort. Fragment-nél ezt nem tehetjük meg, mert újraindításnál a rendszer a public konstruktoron keresztül indítja újra a Fragment-et.
De akkor miért készít egy csomó példa expliciten public konstruktort? Az üres, public, alapértelmezett konstruktor nem készül el automatikusan az osztályhoz? Tényleg ki KELL írni, vagy ez csak didaktikailag szerepel ott? (speciel nekem külön odaírás nélkül is működött) -
Sianis
addikt
válasz
WonderCSabo
#1157
üzenetére
Ezt a mondatot emelném ki rendkívül: "This Bundle will be available even if the Fragment is somehow recreated by Android.". Minden Fragmentnek kell lennie egy default konstruktornak, mert a rendszert azt fogja hívni bizonyos esetekben. És ha a fragment fel van készítve arra, hogy az argumentsből fel tudjon állni, no akkor van jól megírva a dolog.
Sianis
-
WonderCSabo
félisten
válasz
WonderCSabo
#1156
üzenetére
Bocs kicsit elkapkodtam a választ és lejárt a szerkesztési idő. A linkelt cikk ugyanazt a célt szolgálja, de nem teljesen egyezik az általad mutatott mintával. Ez igazán pontosan a static factory method pattern. Ez a SO válasz szépen leírja az általános használatát. Ha picit mélyebbre akarsz menni, akkor olvasd el az Effective Java erre vonatkozó részét.
Fragmentekre levetítve pedig itt és itt magyarázat. -
thon73
tag
Bocsánat előre a kezdő kérdésért.
DialogFragment készítésénél minden útmutató készít egy newInstance() metódust, sőt az arg-okat is ezen keresztül adja át. ((Amúgy én is ezt használtam.)) A google útmutatóban is ez szerepel.
Arra nem jövök rá, hogy ez miért jobb, mint ha a DialogFragment elkészítését (new) a show() hívás előtt végzem el (mint egy sima Fragmentnél). Ugyanúgy egy sor, ugyanúgy működik.
Csak izlések és pofonok? Vagy van valami, ami elkerülte a figyelmemet? Még egyszer: értem, hogy hogyan működik, használtam is, csak az zavar, hogy magamtól teljesen más módszert alkalmaznék/alkalmaztam volna. Viszont kivétel nélkül mindenki más a fenti módszert írja le, de senki nem említi, hogy miért pont ezt.
Bocs, ha nagyon stupid a kérdés; hálás köszönet, ha valaki mégis veszi a fáradtságot, és elmagyarázza, hogy mit nem vettem észre. Köszi!
-
Sianis
addikt
válasz
SektorFlop
#1152
üzenetére
És más launcherrel nem ír ilyet?
Sianis
-
doc
nagyúr
van esetleg itt valaki aki Androidos appot fejleszt SDL2-vel?
-
Sianis
addikt
válasz
SektorFlop
#1149
üzenetére
Nem lehet, hogy ez csak valami teljesen általános figyelmeztető szöveg? Van bármilyen észrevehető hatása?
Sianis
-
SektorFlop
aktív tag
Készítettem egy launchert, de készülék újraindításánál figyelmeztet, hogy a memóriából elvesznek az adatok.
"Restarting your phone will clear temporary files out of memory. Would you like to restart your phone now?"
Tudnátok mondani, egy két dolgot aminél előjöhet ez az üzenet? Én már napok óta ezzel harcolok, de sajnos nem jutottam előrébb.
-
Karma
félisten
válasz
trisztan94
#1147
üzenetére
Egy ilyen hangfelismerést megcsinálni nem nagy varázslat, csak pár elem kell hozzá: folyamatos hangfelvételt kell csinálni, a beeső hangadaton FFT-t számolni, és figyelni, hogy mikor lesz egyszerre minden frekvencián erős a jel. A taps ugyanis úgy néz ki körülbelül.
Ezek mindegyikére van kész kód StackOverflow-n.
-
trisztan94
őstag
Sziasztok!
Mennyire bonyolult egy "hangfelismerőt" implementálni alkalmazásban? Valami olyasmi kellene, hogy ha tapsol a felhasználó, akkor bekapcsol a vaku, stb.
-
Karma
félisten
válasz
trisztan94
#1143
üzenetére
Keystore, nem keystroke. Privát-publikus kulcsokat tároló fájl.
Kiadáskor az APK-t alá kell írni egy RSA kulccsal, ami a fejlesztőt azonosítja. A Play Store-ba feltöltéskor fontos ez, mert ha egy verzió kikerül, onnantól minden frissítést ugyanezzel a kulccsal kell feltenni, vagy hibát dob.
Egyszer kell ilyet generálnod Play Store fiókonként praktikusan, kitöltve a kulcs adatait pontosan.
Az Alias a kulcs neve lesz ebben a keystore-ban, bármi lehet, de praktikus ha egyszerű és könnyen felidézhető. A validity a kulcs érvényessége, ha lejárna, nem telepíthető az APK. Mivel apponként nem változtatható a kulcs, jó távoli időt kell megadni (25 év+). De lehet erre a Play is figyelmeztet.
A kiterjesztés nem számít amúgy. Az AVA hiba sajnos nem tudom mi lehet.
-
moli.hu
őstag
válasz
WonderCSabo
#1142
üzenetére
-
trisztan94
őstag
válasz
WonderCSabo
#1142
üzenetére
"tap to restart" funkció, tehát, hogy akárhova nyom a képernyőn, azt nézze.
Végül megoldottam, nem a textúrára kellett az inputListener. Szimplán implementálni kellett az InputProcessor osztályt az osztályomban, kigenerálni a metódusokat (touchDown, mouseMoved, stb) és akkor az egész képernyőre megy a listener.Itt van ezzel kapcsolatban a SO kérdésem, amit meg is válaszoltam.
Más:
Exportálni akarom a játékot, mint apk. Kér valami Keystroke-ot. Az micsoda? Mire való?Illetve kér még több adatot, ha új keystroke-ot akarok csinálni, azok micsodák?
Alias - ez gondolom az app neve, nem?
Validity?Amikor kitöltöttem ezt az oldalt is, akkor viszont egy ilyen hibát dob:
"keytool error: java.io.IOException: Incorrect AVA format."Ez gondolom a kiválasztott keystroke formája lesz, mert nem volt kiterjesztés amikor mentettem a fájlt. MIlyen kiterjesztés kell neki?

-
trisztan94
őstag
Hogyan tudok egy teljes textúrára inputListener-t kötni?
Ha vesztett a játékos, akkor kidob egy nagy Game Over textúrát, ami full screen. Szeretnék egy olyat berakni, hogy akárhova ha rányom a júzer, akkor újraindítsa a játékot, tehát az egész textúrára szeretném kötni. Lehet ilyent?
-
trisztan94
őstag
Sziasztok!
Egy érdekes jelenségre lettem figyelmes libgdx használata közben:
Van egy MenuScreen.java menüm, így néz ki:
[link] - pastebin, az egész classa fontos rész itt van, az ImageButton-re raktam egy input handler-t:
button.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
MineFinder.Log.debug("xpos: " + x + ", ypos: " + y);
game.setScreen(new GameScreen(game));
}
});Ezzel semmi probléma sincs, átléptet a GameScreen.java-ra, ami maga a játék.
Na a gubanc ott jön, hogy ha be van import-olva a menuscreen, akkor a gamescreen-ben ott ahol a menuscreen-en a "START GAME" feliratú imagebutton volt ugyanúgy érzékeli a touchUp-ot. Nyilván ez nem jó, mert ha oda kattint a júzer, akkor reset-eli a játékot.
Ha nincs bent a menuscreen, kikommentezem, nem import-olom, stb, akkor viszont nem jön elő a jelenség.
Ötlet?
-
moli.hu
őstag
Fijuk,
deviceid-t lehet valahogy generalni fizikai eszkoz nelkul?
ha nem, akkor melyik a legolcsobb androidos targy? -
thon73
tag
válasz
sztanozs
#1137
üzenetére
Vagyis asynctask, egy progress-szel, miközben a program - a felhasználó szempontjából - "áll". Ill. dolgozik. Jogos, mert max 10-20 sec-ról van szó.
Az nem is jutott eszembe, hogy a "külső" hozzáféréseket korlátozzam. Pedig milyen fontos! Több activity van, de mind saját, ezzel nem lesz gond. Köszi!
(((A konvertálás kicsit érdekes. PalmOS alatt PalmPilot adatbázisról van szó. Az adatokat alig bírtam kibányászni belőle, csak PC oldali programok garmadájával. Egyébként a Palmon mind a mai napig tökéletesen működik, csak épp androidra áthozni nem tudtam. Vicces volt, mert már a PalmPilot egykori fejlesztőivel is beszéltem (Franciao-ban!), de persze nem emlékeztek részletekre, source-kódból kellett volna kibányászni...
Hogy rövidre fogjam, az előszedett csv adatbázisokat szeretném importálni, és egyúttal úgy elkészíteni a programot, hogy soha többé ne legyen ilyen probléma: az adatok hozzáférhetőek legyenek valami teljesen egyszerű formátumban is.))) -
thon73: Ha betölteni akarsz akkor célszerű, hogy nem használod az adatbázist másra... És vagy az alkalmazás inicializálásakor töltöd be az adatokat, vagy leállítod azokat az activityket, amik piszkálják az adatbázist.
In-app exportra ezt találtam:
http://bloggerinme.wordpress.com/2011/12/05/android-database-table-export-to-csv-part-3/Importálni is - szvsz - csak full lekódolva lehet... Pl:
http://stackoverflow.com/questions/16672074/import-csv-file-to-sqlite-in-android -
thon73
tag
Köszi a gyors válaszokat! De a probléma valóban ez: programból szeretném sd-re tenni, lehetőleg emberi fogyasztásra is alkalmas formában. Ez a fele nem is jelent gondot.
Abban nem vagyok biztos, hogy a programszervezés szempontjából melyik a legjobb módszer. Pl. mentés történhet nyugodtan a háttérben (pl. service), de töltésnél ilyenkor mi lesz? Folyamatosan változik a lista, ahogy töltöm? Vagy jobb mindkét esetben leállítani a programot és egy asynctaskkal dolgozni? Szóval kiváncsi lennék a véleményetekre. -
sqlite command line kliens:
Import
sqlite3.exe database.db
>
.mode csv
.import [fájlnév.csv] [táblanév]
.exitImportnál a táblának már léteznie kell és azonos struktúrájunak lenni, mint a CSV fájlnak. CVS fájlból a header-t (1. sor) törölni kell import előtt.
Export
sqlite3.exe database.db
>
.mode csv
.header on
.output fájlnév.csv
.dump [táblanév]
.exit -
thon73
tag
SQLite adatbázist szeretnék exportálni/importálni pl. csv-be. Az adatbázis elég nagy. Mit javasoltok, milyen keretben érdemes ezt megtenni? AsyncTask, Servive, Loader (import oldal), egyéb? Szerintetek mi a legelőnyesebb? Köszi!
-
Konair
csendes tag
válasz
WonderCSabo
#1127
üzenetére
Köszi, elvileg most lekérdeztem a telefon orientációját, de sajnos még mindig nem tudom, hogyan számoljam ki vagy forgassam el a tengelyt. Erre esetleg lenne valakinek ötlete?
-
WonderCSabo
félisten
Ne a rotation matrixot használd, hanem az getOrientation() metódust. Ez sokkal könyebben értelmezhető, lásd javadoc.
-
Konair
csendes tag
Sziasztok!
Programomban szeretném lekérdezni a függőleges gyorsulás mértékét.
Ha a telefon fektetve van, akkor a gyorsulásmérő szenzorral ezt szépen ki is írja a Z tengelyre. Amint a telefont elforgatom, akkor már változnak a tengelyek, és nem tudom miként lehetne lekérdezni.
Olyan megoldás kéne, mint a linear acceleration, csak függőlegesen.
Nézegettem a rotation matrix-ot, de nem sikerült rájönnöm a működésére.Köszi a segítséget előre is!
-
WonderCSabo
félisten
válasz
RexpecT
#1121
üzenetére
Ha picit tovább olvasol:
When a user searches or browses for applications using the Google Play application, the service compares the features needed by each application with the features available on the user's device. If all of an application's required features are present on the device, Google Play allows the user to see the application and potentially download it. If any required feature is not supported by the device, Google Play filters the application so that it is not visible to the user and not available for download.
-
RexpecT
addikt
Igen ezt én is megtaláltam, de ettől még fel lehet telepíteni.
android:required:
Boolean value that indicates whether the application requires the feature specified in android:name.
When you declare "android:required="true" for a feature, you are specifying that the application cannot function, or is not designed to function, when the specified feature is not present on the device.
When you declare "android:required="false" for a feature, it means that the application prefers to use the feature if present on the device, but that it is designed to function without the specified feature, if necessary.
The default value for android:required if not declared is "true". -
RexpecT
addikt
Üdv!
A Manifestben vagy a Play storeban ki lehet azt kötni, hogy ha mondjuk egy eszköz nem rendelkezik egy adott szenzorral akkor ne is lehessen telepíteni? Verzióra és kijelző méretre tudom hogy lehet tiltani.

-
thon73
tag
válasz
WonderCSabo
#1116
üzenetére
Mindkettőtöknek nagyon köszönöm a segítséget; továbblökött a mélypontról. Ennyire nehéz hibakeresést még soha nem csináltam, ugyanis minden próbálkozás között újra kellett indítani a telót (ami kb. fél perc).
Bocsánat, az onPause irány véletlen volt (de egy fél nap keresés után már nem találtam más okot)
,valóban úgy tűnt, hogy az marad ki: a hiba CSAK leállításkor jelentkezett; az eclipse debugger nem követte ilyenkor az onPause-t (mint utóbb rájöttem: hiszen leállt), a Log-ot meg én bénáztam el. De a hozzászólásotok után végig belogoltam, és akkor kiderült, hogy onPause van, csak ami benne lenne - no az nincs.A tanulság kedvéért a hiba (egyébként utólag pofon egyszerű, de csapdás):
A program egy gigantikus RandomAccessFile-t ír/olvas az sd-n. (Ennyiben a felhasználói adatok azonnal kikerülnek.)
Az onPause részben (többek között) azt kell elmenteni, hogy valaki nem piszkál-e bele a RAF file-ba, amíg távol vagyunk. Ehhez mentem (név mellett) a méretét (File.length()) és az utolsó módosítás időpontját (File.lastModified()). Újraindításkor ezt ellenőrzi.
Ez a módszer prímán működik, amíg ki nem kapcsoljuk a telót.A gondot az jelentette, hogy a RandomAccessFile NEM szinkron írást csinál, sőt a close() után sem írja ki az adatokat! (Ezt bizonyára mindenki tudja, valószínűleg én is, csak nem gondoltam rá.) Véletlenül "rw" módot adtam meg az "rws" helyett.
Az érdekesség, hogy több hetes próbálgatás alatt is a nem-szinkron kiírás MINDIG bekövetkezett az onPause előtt, ha szabványosan léptem ki. Ha a telefont kikapcsoltam akkor SOHA nem következett be az aszinkron írás az onPause előtt (ezt két napja tudom).
((Megjegyzem, sehol nem találtam részletes dokumentációt arról, hogy pontosan mi és milyen sorrendben történik a kikapcsoláskor.))Van még egy probléma, ami komoly fejtörésre adhat okot: RandomAccessFile "rws" írásakor SEM stimmel a lastModified() érték a visszaolvasáskor!! Az esetek 90%-ban pontosan EGY másodperc (1000 ms) különbség van a két külön alkalommal visszaolvasott érték között!! Mivel a lastModified() érték MINDIG három 0-val végződik (vagyis nem ms, hanem másodperc pontos) valószínűleg a kerekítésnél lehet gond; de ezt nem tudom, csak gondolom. Hivatkozást nem találtam SGS2 és Note gépeken próbáltam.
Köszönöm, hogy kipróbáltátok, teljesen fals útról térítettek vissza; így jópár további óra alatt meglett a hiba!
-
thon73
tag
Sziasztok!
Az onPause metódusban van egy fontos mentésem. Próbálgatás közben az derült ki, hogy amikor kikapcsolom (úgy értem teljesen, android logo meg minden) a gépet, akkor NEM fut le az onPause, és következményesen NEM történik meg a mentés.
Az onPausenek nem kellene mindig lefutnia?? Hová lehet még tenni a mentést, hogy biztosan megtörténjen?? (Jó, mondjuk akksi kivétel ellen nincs orvosság, de ez egy "tervezett" leállítás!)
Találkoztatok már ezzel a problémával? Minden segítséget hálásan köszönök!
-
SektorFlop
aktív tag
Sziasztok!
Próbálom elkérni a készülékre telepített alkalmazások listáját. Nincs is vele gond, emulátoron és 3-4 külömböző készüléken ki is próbáltam. Viszont azon a készüléken, amelyen kellene nekem pont nem működik. Keresgéltem neten több és külömböző módszereket, mindegyik működik, de az érintet márkán (Huawei) nem. A márka több készülékén is volt szerencsém kipróbálni azokon sem ment.
Bemásolok egy egyszerű példád, ez is működik minden készüléken, kivéve a Huewai.
List<PackageInfo> packages = pm.getInstalledPackages(0);
for (PackageInfo packageInfo : packages) {
Log.d("apps", "installed: "+ packageInfo.packageName);
if(db.getEnableApps(packageInfo.packageName) == 1){
Log.d("apps", "Installed: " + packageInfo.packageName);
}
}Valakinek van valami ötlete esetleg, hogy ezeken a márkajelzésű készülékeken miért nem megy a dolog?
-
Phausto
tag
Sziasztok!
Egy olyan alkalmazást kell fejlesztenem amiben az ügyfelek fizethetnek bizonyos szolgáltatásért, tehát valamiféle in-app purchase lehetőséget kell beépíteni. A kérdésem hogy milyen megoldást ajánlanátok erre? Tudom hogy a Google-nek van In-app Billing lehetősége, de nem tudom pontosan hogy az hogy működik, mert ha jól értem az csak Google Play-es tranzakciókra használható. Valamint olyat hogy lehet megvalósítani hogy ha az ügyfél megadta a banki adatait, akkor bizonyos időközönként (pl. havidíj, mint a Skype-nál) leemel a számlájáról egy összeget?
Bocs ha hülyeséget kérdeztem, még nincs tapasztalatom ebben a témában! -
negyedes
addikt
válasz
WonderCSabo
#1110
üzenetére
Koszi megvan.

Azt hogy tudnam elerni hogy az email appom egy resze mindig fusson es 10 percenkent megnezne hogy jott-t uj email attol fuggetlenul hogy az app fut vagy nem.
-
negyedes
addikt
hogy tudom atszinezni egy lista uj elemet? megjon az uj email, frissul a lista es mas szine legyen.
-
trisztan94
őstag
Miért nem vált át a GameOver screen-re a game? (libgdx)

if(catched == 1){
setScreen(new GameOver(true));
}Nincs külön class-ekre bontva az app (nagyon egyszerű, nincs rá szükség), a MainGame.class így néz ki:
public class MainGame extends Game {
create metódus(),
render metódus(),
... stb
}A render metódusban amikor "elkapok egy vízcseppet", akkor a catched 1-el növekszik, de ez működik is, mert a fenti elágazásba egy log-ot is raktam, és szépen kiírja, hogy nyertél.
a setScreen(new GameOver(true)); átal átadott boolean érték azt mondja, hogy nyert-e a játékos, vagy veszített-e.
A GameOver class egy másik mappában van (Screen/GameOver.class) és az így néz ki:
public class GameOver implements Screen{
boolean win;
Texture bucketTexture;
Texture dropTexture;
SpriteBatch batch;
OrthographicCamera camera;
public GameOver(boolean win)
{
this.win = win;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
if(win == true){
batch.draw(bucketTexture, camera.viewportWidth / 2, camera.viewportHeight / 2);
}
else{
batch.draw(dropTexture, camera.viewportWidth / 2, camera.viewportHeight / 2);
}
batch.end();
}
//... satöbbiAmikor át kéne váltania a Screen-t, akkor semmi sem történik, csak egy másodpercre befagy a játék és folytatódik tovább

-
fatal`
titán
válasz
szabi__memo
#1106
üzenetére
Ja, de pl. Svájcban meg Olaszországban nem lehet. Tiszta röhej az egész.
-
Yany
addikt
Fizetős appok feltöltése országonként: [Google Play @ Wikipedia]
A Developers can sell oszlopot tessék nézni.
-
fatal`
titán
válasz
WonderCSabo
#1096
üzenetére
Szerintem sokkal inkább a remek adótörvényeink az oka ennek.
Egyébként viszonylag kevés országból lehet fizetős appot publikálni.
-
PandaMonium
őstag
válasz
WonderCSabo
#1096
üzenetére
Ez sajnos nem mentség arra a nem éppen maroknyi emberre nézve aki szeretne ilyesmiből élni (köztük én is). Persze, lehet, hogy csak pár százan lennénk ilyen magyarok és ez a Google-nek nem nagy szám, de nekünk már elég komoly probléma, 1 platformal kevesebb amire fejleszthetünk. Ha meg iOS-re akarok fejleszteni akkor mindenképp Apple OSX (laptop, iMac vagy Mac Mini) cuccomnak kell lennie (vagy Hackintosh-ozni, ami elég felejtős), mert hivatalosan ugye csak arról lehet iOS-re publikálni. Hihetetlen, hogy ezek a mobil platformok milyen feltételekkel léteznek...
Marad a Steam, ahol a Greenlight-on már utcahossznyi tumultus van, az Xbox Live és még esetlegesen a Playstation Network ha ki tudja imádkozni az ember a Sony-ból, hogy regisztrált fejlesztő legyen és egyáltalán hozzáférést kapjon az SDK-hoz.
Ha már itt lyukadtam ki megkérdezem: Nem tudjátok, hogy az OUYA marketjére lehet-e fizetős cuccokat felrakni M.o. -ról? Mert ugye elvileg az is Android, de közben van saját marketplace-e.
Új hozzászólás Aktív témák
- Kerékpárosok, bringások ide!
- Milyen autót vegyek?
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy S23 Ultra - non plus ultra
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Bemutatkozott a Redmi 13 4G
- Bittorrent topik
- Milyen Blu-ray írót?
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- Inno3D GeForce RTX 4070 Ti X3 12G - Karácsonyi akcióban!
- Redragon Kumara K552 RGB Brown Switch magyar billentyűzet
- Lenovo Thinkpad P1 Gen 6 - i9-13980HX, 32GB, 2TB SSD, 16" WQUXGA (3840 2400), RTX 4090
- 15.gen! Intel Core Ultra 9 285K +16-32GB DDR5 RAM +hűtött VRM-es Z890 lap! GAR/SZÁMLA (a Te nevedre)
- OP AudioCodes C450HD Ip Phones - Szines kijelzős - Teams/ Zoom telefon - Új dobozos
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: Laptopszaki Kft.
Város: Budapest


))



Bár az lehet csúnyább volt.xd

Marad a Steam, ahol a Greenlight-on már utcahossznyi tumultus van, az Xbox Live és még esetlegesen a Playstation Network ha ki tudja imádkozni az ember a Sony-ból, hogy regisztrált fejlesztő legyen és egyáltalán hozzáférést kapjon az SDK-hoz.


