• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LWEEKAndroid development
    Diskuse o vývoji aplikací pro platformu Android.
    -----------------
    Tipy, Triky, Postřehy, Začátečnický help, Nápady na nové aplikace.

    Oficiální developerská stránka: http://developer.android.com
    Něco málo v češtině na WiKi android fora: http://wiki.androidforum.cz/index.php/Programov%C3%A1n%C3%AD
    Článek na Zrojáku: http://zdrojak.root.cz/clanky/vyvoj-pro-android-ii/

    Docela zajímavé tutoriály přímo od vývojářů ze Sony Ericsson:

    na tvorbu vlastního View adapteru
    http://blogs.sonyericsson.com/developerworld/2010/05/20/android-tutorial-making-your-own-3d-list-part-1/

    zajímavý nápad na zoomování jedním prstem - aneb vytváření gest
    http://blogs.sonyericsson.com/developerworld/2010/05/18/android-one-finger-zoom-tutorial-part-1/
    rozbalit záhlaví
    YAZZMAN
    YAZZMAN --- ---
    MR_DAN: support knihovny potrebujes, pokud chces pouzivat nejakou funkcionalitu, ktera byla predstavena pozdeji, na starsich verzich androidu (fragmenty jsou myslim az od API 11, takze na starsi verze potrebujes support), je to jina implementace stejne veci. Pokud nepotrebujes, support knihovny je lepsi nepouzivat

    fragmenty si s klidem drz v nejakem listu a prehazuj pomoci fragmentManageru (a mam za to, ze FragmentManager existuje uz od API 11)
    MR_DAN
    MR_DAN --- ---
    zdarek, tak ja vas zase zamestnam nejakou otazkou :-)
    android.support.v4.app.Fragment vs. android.app.Fragment - nejen tady se setkavam se zdvojenim trid, kdy jedna jde vzdycky z nejakeho compat baliku ... je nejake general rule of thumb kterou mam volit? vidim ze jedna je ze sdk 26, ale ani u jednoho mi IDE nerve, mam minSdk 21 a compileSdk 26, hadam ze to teda nebude uplne dobre?
    a rovnou druha - mam aktivitu s drawerem, pri preskakovani mezi polozkama draweru se vzdycky vytvori nova instance Fragmentu a ta se naloaduje do te aktivity - chci si ty instance pamatovat, abych je porad nevytvarel znova? nebo mam ukladat jejich stavy a instance jako takove nechat zabit? diky tomuhle jsem se dostal k tomu viz vyse, protoze takovy FragmentManager by mi s tim hodne pomohl, ale ten je z toho sdk 26
    PISKVOR
    PISKVOR --- ---
    KKTLEO: Myslíš něco jako je v Google Maps Street View?
    KKTLEO
    KKTLEO --- ---
    MR_DAN: Nejde mi zas tak o výdělek, jako o nabírání zkušeností, odezvu zákazníků atp... Pravděpodobně to nebudu dělat jen pro Prahu ale celou Čr s možností "zaslat vyhlídku"
    MR_DAN
    MR_DAN --- ---
    KKTLEO: ja jsem tady asi ten nejnevhodnejsi na odpovidani, protoze jsem teprve zacal, na druhou stranu mi trvalo nekolik let vymyslet appku, u ktery bych si mohl uspokojive odpovedet na tuhle otazku - jak na tom chces vydelat? mas business model?

    resp. vubec by mi nevadilo tohle tema trochu rozebrat s lidma co uz maj zkusenosti...
    prvotni rozsireni mezi co nejvic lidi je zda se otazka toho, kolik je clovek schopnej nacpat penez do marketingu, nepletu se?
    KKTLEO
    KKTLEO --- ---
    Zdravím, myslíte jsi, že by měl trh (turisti, místní) zájem o aplikaci ukazující výhledy na Prahu?
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN: Není to kočkopes, ale pokud chceš udržovatelnou appku, tak ten vývoj prostě musí směřovat ke stejným(podobným) patternům, abys měl ty věci oddělitelné, testovatelné, mockovatelné, nahraditelné. Appka ti tím nějak nenabude na velikosti, většina zásadních knihoven je celkem malinkých a nebo to mám SDK přímo v sobě (generování databindingu např.) ..
    Než dělat kočkopsa to spíš umožňuje to dělat různě a najít si v tom co potřebuješ a co ti vyhovuje.

    A otáčení obrazovky(znovuvytvoření aktivity), umírání aktivit zatímco ti běží jiná, zabíjení background procesů kvůli dozu a podobně je ta zábava na androidu :-D Ale v reálu je to opět jako na webu, jen ten context tady není session nebo request, ale app nebo activity .. jen je tu velká výhoda, že ti to tu používá jen jeden uživatel :-D
    YAZZMAN
    YAZZMAN --- ---
    MR_DAN: otaceni obrazovky je nejvetsi srani :D
    MR_DAN
    MR_DAN --- ---
    DRIZDIK:
    2) tyjo to mi vubec nerikej, ze s otacenim obrazovky bude nejaky s*ani :D zatim MVP nedelam, ale jak se dostane appka aspon do puberty, tak se to bude vic a vic hodit
    3) no a neni to pak delani kockopsa? ja jak android vyvoj poradne neznam, tak chci od zacatku vyuzivat knihovny a principy ktery jsou pro android vlastni, neohybat si to pro svoji potrebu aby to bylo co nejvic podobny jave, jednak by to mohlo ztracet na efektivite a jednak abych z lehky 4-5obrazovkovy appky neudelal 100mb molocha
    jinak samozrejme message/event bus nebo ui vazany na model, to by se mi libilo :-)
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN:
    1) co říká DACAN: , 21 je nejpohodlnější pro tebe, plná podpora multidex v ART runtimu, rychlejší vývojovej cyklus a ty drobnosti ala vectory atd, plus od 19 je plná podpora RTL jazyků a UI, pokud cheš dělat něco globálního, tak v tomhle si od 19 ušetříš práci.
    2) Dagger2 je jasnej, ale pokud bys to chtěl používat jako YAZZMAN:, tak doporučím kouknout po nějaký další plugin knihovně, která ti dovolí těm presenterům zachovat jednoduše stav a aynchroní operace při rotacích obrazovky a podobně.
    3) v podstatě se ti to blíží komplet k hezkýmu Java vývoji, můžeš si přidat i nějaký ORM, využít pořádně MVVM databinding, kdy se ti deklarativně napsaný UI obnovuje podle změn na modelu bez zbytečnýho boilerplate kodu, message bus a podobně, všechno na androidu už je, případně pokusy o jiné věci typu unidirect Jedux,
    MR_DAN
    MR_DAN --- ---
    jasne, s tou cilovkou a strukturou uzivatelu si taky v hlave trochu zahravam - jakoze uzivatel smartphonu, co neni uplne duchodce se dvema ikonama na plose, mimo ktery se boji kamkoliv tuknout (nebo neco na ten zpusob), bude totalne nestastnej s telefonem starsim nez rekneme 3 roky... nejsem uplne marketak, muzu bejt dost mimo :-) ale na tu 21 to asi zaseknu, ikdyz bych chtel pochopitelne pokryt vsechny cilovky
    ..dalsi faktor je, ze prvni stejne pokryju powerusery, mlady lidi, proste tam ty verze budou v prumeru vyssi a nez se to rozsiri na ostatni cilovky, tak to chvilku potrva (s mym tempem tak 10 let :D) a to zastoupeni verzi se zas trochu pohne

    ad Dagger2 - cili pouziva se to, dobre ze jsem se zeptal :-) nebude to asi uplne jak spring v jave, ale lepsi nez dratem do oka
    bal jsem se aby to nebyla nejaka zoufalost ne-android vyvojaru podobna jak kdyz se nekdo zoufale snazi rozfachat outlook a photoshop na linuxu apod :-)
    DACAN
    DACAN --- ---
    MR_DAN:
    1) to je podle typu aplikace, cilovky a procenta lidi, co pouzivaji nejnizsi verze. mame ted v jedne app 16, ale to je hlavne kvuli tomu, ze app by mela vyuzivat jiz odlozene (tudiz neupdatovatelne sracky) telefony v domacnostech. (pro pohodlnej vyvoj 21+, protoze se tam lame spousta apicek, jako camera1 vs camera2, vector drawables atd...)
    2) Dagger 2 od googlu je takovej prumyslovej standard
    YAZZMAN
    YAZZMAN --- ---
    MR_DAN: Hele, jeste loni jsme minSDK meli 16, letos jsme to zvedli u novych projektu na 19...

    Dagger2 pouzivame na injketovani presenteru do views v MVP, ale asi by s tim sly delat i divocejsi veci :)
    MR_DAN
    MR_DAN --- ---
    hola, mate tu zivo, tak ja sem zas hodim nejakej dotaz :-)
    - jak moc resite kompatibilitu? resp. co je nejzdravejsi minSdkVersion pro pomer mnozstvi uzivatelu/programatorska spokojenost? 21-22?
    - co dependency injection? chci toho moc, poblaznenej z vyvoje javy, nebo je to realny tema, kterym se mam zabyvat? nasel jsem nejaky Dagger 2, ale moc jsem to zatim nezkoumal

    jinak ty rady s polohou byly super, vsechno to fakt funguje :-) musel jsem pochopit, ze to neni tak, ze si kazda appka rekne zjisti polohu jen pro me a dej mi vysledek, ale ze je ten lokalizacni modul sdilenej (nebo tak to aspon chapu)
    MR_DAN
    MR_DAN --- ---
    bomba! dik moc obema :-) zena zitra rano odlita na 3 dny na sluzebku, tak vsechny ty rady zkusim zuzitkovat.. (devky a koks jsou pro amatery)
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN: vypni multi-core v advanced nastaveni noveho emulatoru, potom se s tím dá dobře fungovat a u větších appek to je na deploy celého APK i rychlejší, na zrychlení cyklu si projít přednášky z G I/O, které se toho týkají, ale obecně je to v minimalizaci bordelu v projektu, lehké úpravě jeho nastavení (minSdk si pro debug hodit na vyšší verzi než 21 kvůli multidexu a podobně) a používání instant runu s co nejnovějším studiem
    Případně můžeš zkusit JRebel a jejich plugin do studia.
    A taky si appku přizpůsobit tak, ať ti startuje už tamkam chceš a nemusíš při každém redeployi klikat na potřebný stav, případně si raději udělat malinký projekt jen pro otestování komnkrétní funkcionality, tam ji odladit, minimalizovat, případně extrahovat do modulu a přenést do svého projektu. jak vídám lidi, tak tímhle ve výsledku ztratí nejvíce času.
    JOHNY_G
    JOHNY_G --- ---
    Až na výjimky používám výhradně živý telefon na ADB. Alespoň na mém PC je to daleko rychlejší snad ve všech ohledech (boot, instalace, odezva prostředí, atp.). Ale znám i vývojáře, kteří emulátor používají; není na tom nic špatného, jen jsem s ním měl vždycky obludné výkonové problémy.
    MR_DAN
    MR_DAN --- ---
    JOHNY_G: ja to tam nedratuju, to je jen zkratka tady, abych nepsal romany...
    kazdopadne diky za radu, kouknu na to :-)
    btw muceni se s emulatorem v ramci android studio - da se to udelat jinak a lepe? jde mi o co nejrychlejsi cyklus zmenim kod <-> vyzkousim (+debug pokud to nefacha a nevim proc)
    JOHNY_G
    JOHNY_G --- ---
    MR_DAN: V prvé řadě bych tam nedrátoval GPS (pomineme, že bys měl používat místo "gps" konstantu LocationManager.GPS_PROVIDER) a nasadil rovnou FusedLocationProviderClient (jestli se mučíš emulátorem, tak budeš potřebovat ten s Google APIs). Pak si ještě zkontroluj nastavení, jestli nemáš vypnuté polohové služby v systému.
    MR_DAN
    MR_DAN --- ---
    MR_DAN: locationManager.getLastKnownLocation("gps") mi zarputile vraci null a to uz jsem se probojoval pres permissiony a v emulatoru jsem nastavil x=14.4749374&y=50.0950096, ale ten provider o tom nevi
    MR_DAN
    MR_DAN --- ---
    JOHNY_G: jo uz jsem do toho Retrofitu trochu proniknul (vic nez v case psani toho dotazu), vlastne uz mi to komunikuje, pohoda :-) asi to nebude spatna knihovna, s trochou konfigurovani serializace na backendu to slape a ten kod je jednoduchej a prehlednej..
    dalsi zadrhele prijdou az budu resit authentikaci...
    fragmenty jsou pro me zatim neznamej termin (teda v kontextu androidu), jeste mam co studovat...

    MAKROUSEK: ja jsem myslel pouzivani primo classy HttpClient, a parsovani odpovedi ze Stringu, bez pouziti neceho uz hotoveho viz vyse
    po strance architektury je to jasna volba, stejny backend obslouzi vsechny typy klientu


    jeste dotaz, ten bude asi spis na emulator v android studiu - LocationManager donutim vracet mi nejakou polohu asi jen tak, ze zapnu nejaky Listener a v tom emulatoru rucne poslu souradnice az bude bezet, co?
    resp. da se nejak jednoduse ziskat gps poloha synchronne?
    dik!! :-)
    Kliknutím sem můžete změnit nastavení reklam