• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LWEEKAndroid development
    MAKROUSEK
    MAKROUSEK --- ---
    FAERTIS: Ja nezavisle na tom jsem zkousel opublikovat na tom jejich marketu. A) neumi placene aplikace, jenom in-app purchases. B) po registraci jejich system zapomnel muj email, takze jsem si tri dni dopisoval s jejich supportem, nez mi uzivatele recreatovali a propojili s publikovanim me appky. Suma sumarum jsem pak okamzite unpublishnul a nazdar.
    FAERTIS
    FAERTIS --- ---
    NECROMAN: Celkem to šlo, zajímavý bylo když vysvětloval proč se rozhodli pro vlastní market (80% lidí v rozvojových zemí kam cílí, nemá kreditní karty a oni mají smlouvy s operátory a bude se to kupovat přes ně). Nějaký příklady jak co naportovat hned a co půjde naportovat časem. Taky se tam daly vyzkoušet aplikace na reálných zařízeních a kdo měl problémy s portací, tak se mohl zeptat na detaily. Telefon nebyl, nabíječka nebyla, tričko ani hrnek ... akorát gumová kačenka, která nic nedělá :)
    NECROMAN
    NECROMAN --- ---
    Byl jste dneska nekdo na tom NokiaX day? Jake z toho mate pocity? :)
    DRIZDIK
    DRIZDIK --- ---
    DATEL: Přesně z toho důvodu jsem zvolil ActiveAndroid .. nadefinuješ entity, přidáš předka aplikaci, meta tag do manifestu a databaze funguje, zadnej dalsi zbytecnej kod
    DATEL
    DATEL --- ---
    ROTTWEILER: před pár dny jsem taky řešil, jak co nejrychleji zprovoznit DB. Kvůli nedostatku času na zkoumání jiných knihoven jsem zkončil u toho, že jsem vytvořil třídy pro entity, pak pro každou entitu / tabulku třídu "data source", která pracuje s DB, vytváří entity, konvertuje data atd. Pak tam kde potřebuju dostat něco z DB (aktivita, fragment, ...) vytvořím pro každou "akci" třídu z AsyncTask, kde se na pozadí pracuje s data sourcem a v metodě pro main vlákno se to pak cpe do UI (případně adaptérů atd.). Není to moc elegantní, ale bylo to rychlé. Mít víc času, tak prozkoumám taky nějaké hotové knihovny.
    RUTHAN
    RUTHAN --- ---
    Ahoj,
    snazim se nainstalovat Androidx86 4.4 na svuj netbook a potreboval bych poradit, jak spravne nastavit grub. Jde o to, ze mi ted Android porad bootuje jako live distribuce a pokud udelam zmeny, tak se po restartu ztrati, protoze se mi asi nepovedlo spravne rootnout partici.

    Muj postup byl nasledujici:
    - stahnul jsem si x86 iso
    - jsem pomoci unetbootinu hodil na USB flashku
    - partici na z USB flashky jsem zkopiroval pomoci EasyUS partition manageru na pevnej disk
    - do jiz existujiciho linuxovyho Grub2 zavadece jsem pridal zaznam(viz nize), kterej by mel Android zavest
    - android se dokonce i zavede, ale jak jsem psal jen jako live, po restartu zase vsechno jeden znova

    Grub entry:

    menuentry "Android x86 by RuThaN" {
    insmod ext2
    set root='(hd0,6)'
    linux /kernel quiet SDCARD=/dev/sda6 root=UUID=3A6B-EC34 androidboot.hardware=android_x86 acpi_sleep=s3_bios,s3_mode video=-16 quiet splash
    initrd /initrd.img
    }

    To co je v tom grubu jsem splacal z toho, oc jsem hned nasel na netu, ten parametr SDCARD ocividce nefunguje. Nejak jsem si naivne rikal, ze tohle bude fungovat out of box.. a moc nechapu, proc to porad bootuje jako live, jestli to neni vlastnost, uz ten live distribuce, coz doufam, ze ne.

    ROTTWEILER
    ROTTWEILER --- ---
    DRIZDIK: Tak to je jasné, je to IO operace, ale spíš jde o to, že většina ORM používá reflexi, která se volá v době, kdy to ještě v jiném vlákně neběží.
    DRIZDIK
    DRIZDIK --- ---
    Veskera prce s DB je pomala a mela by se delat na jinem vlakne. Ja doporucuju ActiveAndroid, ktery pouzivam.
    ROTTWEILER
    ROTTWEILER --- ---
    Jakou knihovnu byste doporučili na práci s databází? Nějaké ORM? Nebo používat raději, co nabízí sám Android, protože knihovny jsou moc pomalý?

    Zatím jsem koukal na

    GreenDAO
    ActiveAndroid
    Sprinkles
    SQLiteProvider
    Cupboard
    OrmLite
    Sugar
    DRIZDIK
    DRIZDIK --- ---
    DATEL: To jsem nejdříve dělal pomocí Observable přímo z java.util, nyní to řeším pomocí RoboGuice a jejich EventBusu, kterej je velice jednoduchej, jen s fragmentama ještě lehce zabugovanej, ale pořád lepší než bez toho. Jen ze všech eventů odkládat práci pomocí post(Runnable), abys neblokoval delegaci eventu do ostatní observerů.
    DATEL
    DATEL --- ---
    DRIZDIK: díky za tip, někdy na to kouknu.

    Zatím jsem to vyřešil jednoduše (celkově zatím ne úplně ideálně) - třídy pro entity, pak třídy pro DataSource (abstraktní + pro konkrétní tabulky) a v aktivitách / fragmentech mám pro jednotlivé požadavky na DB AsyncTask třídy, které tahají data a pak je ládujou do GUI. Zbývá vyřešit nějaké automatické upozorňování na změny (tj. Observer), ale pro počáteční vývoj to zatím stačí tak jak to je.
    DRIZDIK
    DRIZDIK --- ---
    DATEL: Používám ActiveAndroid, dotazy pouštím pomocí generickýho asynctasku, který dostane jako paramaetr dotaz a co má vrátit a jen implementuju co s tím na konci udělat.
    ROTTWEILER
    ROTTWEILER --- ---
    NECROMAN: Tak ten bus už je na cestě a byl v některých městech, ale nepodařilo se mi najít referenci, ale zkoušel jsem hledat v angličtině, možná kdybych hledal ve francouzštině nebo italštině, tak zmínku najdu.
    NECROMAN
    NECROMAN --- ---
    ROTTWEILER: na Mobile World Congresu rozdavali mobily jak na bezicim pasu kazdemu, kdo tam na svem notebooku ukazal obrazovku z Nokia Storu s odeslanou aplikaci, ani jsi ji poustet nemusel :)
    Nevim, jak moc to bude i u toho portovaciho busu, ale mozne to je, pokud je zaujmes :)
    DATEL
    DATEL --- ---
    Měl bych dotaz k tomu, jakým způsobem implementujete práci s SQLite DB. Prošel jsem kupu článků a diskuzí na netu a nějak nevím, jaký způsob použít.

    1. je jasné, že práce s DB musí běžet v samostatném vlákně
    2. jasná je základní třída z SQLiteOpenHelper, dále asi třídy pro jednotlivé entity
    3. přijde mi zbytečné používat CursorLoader a ContentProvider, když nechci poskytovat svá data ven z aplikace (naopak, je to nežádoucí)
    4. narazil jsem na CWAC-loaderex knihovnu, která právě řeší Loader bez ContentProvideru - jenže autor tuto cestu opustil s tím, že knihovnu dál vyvíjet nebude (Why are Loaders bad in Android)
    5. z výše uvedených bodů tak nějak vyplývá, že by asi bylo nejlepší vytvořit vlastní třídu z AsyncTask - jenže taky už nějak nevím, jak přesně bych to udělal, i podle toho, na co jsem narazil na netu, by to asi muselo být tak, že pro každou metodu, která získává nebo ukládá data, by musela být vlastní AsyncTask třída, což mi přijde dost divoké.

    Rád bych se tedy zeptal, jaký zpúsob v dnešní době používáte vy? Nejde mi o konkrétní kód, spíš jen o princip. Díky.
    ROTTWEILER
    ROTTWEILER --- ---
    NECROMAN: Tím mobilem jsi si jistý?
    MAKROUSEK
    MAKROUSEK --- ---
    NECROMAN: Nejenom, taky tam maj ty telefonky, zkus klikat vic.
    NECROMAN
    NECROMAN --- ---
    MAKROUSEK: je to tak, maji tam nejaky remote debugging na jejich webu + staticky analyzer, kam nahrajes apk a ono ti to rekne, zda tam mas nejake problematicke API.
    Co jsem slysel, tak to bezi na Androidu 4.1.2, nejsou v tom telefonu Google sluzby, vetsinou jsou nahrazene Microsoftimi nebo Here mapami.
    Upravu je treba provest jen tehdy, pokud se tam pouzivaji Push notifikace, InApp purchases a snad mapy, jinak by to melo jet 1:1.
    MAKROUSEK
    MAKROUSEK --- ---
    H_U_N_T_E_R: Kdyz se registrujes na tom jejich portale, maji tam takovy bazmek v jave, ktery ti na dalku pripoji jeden z telefonu, ktere maji nekde ve Finsku pripojene k netu. Docela to chodi, vyzkousel jsem.
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    NECROMAN: a existuje nějaký emulátor, na kterém by se to dalo ozkoušet? Nebo si musím nejdřív jednu koupit a na té si app odladit?
    Kliknutím sem můžete změnit nastavení reklam