Gson: parsrování lokálního json souboru na objekty

Dnes si ukážeme jednoduchý příklad jak parsrovat lokální .json na objetky. Na tuto práci je perfektní knihovna gson, přidáme ji mezi závislosti:

Náš ukázkový file.json vypadá následovně:

Jedná se o list objektů. Jednoduché. Uděláme si objekt, který namapuje list jako ArrayList, ve kterém budou objekty s propertou name a age:

Načteme soubor:

Přečteme obsah souboru:

Obsah souboru konvertujeme na objekt:

 

Android: problém se závislostmi

Zobrazuje se vám taková to hláška a nevíte jak problém vyřešit?

Zkuste nejprve aktualizovat všechny balíčky na nejnovější verzi. Pokud problém přetrvává, zkuste následující postup:

V root složce problémového projektu spustit příkaz:

V souboru out.txt najít řádky, které nemají šipku na nastavenou verzi SDK (u mne 28):

Správně má být takhle:

tyto řádky se správnou verzí sdk přidat do build.gradle:

 

Android: RecyclerView

LisView je mrtvý, ať žije RecyclerView. Ano, je to opravdu tak, zapomeňte na ListView a začněte používat RecyclerView – je výkonější, flexibilnější a vyvýjí se, ListView je mrtvý.

Pojďme si udělat jednoduchou ukázku.

Do souboru build.gradle je nutné přidat závislost:

1) Přidání RecyclerView do šablony activity_main.xml:

2) Model

Vytvoříme třídu s Movie.java s gettery a settery.

3) Adapter

Adapter slouží pro zobrazení dat v RecyclerView stejně jako v ListView. Jsou pouze přetížené jiné metody.

Vytvořte třídu s názvem MoviesAdapter.java. Zde metoda onCreateViewHolder () použije movie_list_row.xml. V metodě onBindViewHolder () jsou nastaveny příslušné údaje o filmu (titul, žánr a rok) pro každý řádek.

4) Layout pro řádek v RecyclerView

Vytvořte layout xml s názvem movie_list_row.xml s níže uvedeným kódem. Tento layout vykreslí jeden řádek v RecyclerView se zobrazením názvu filmu, žánru a roku vydání.

5) Activity

Nakonec upravíme MainActivity.java a provedeme níže uvedené změny. Metoda prepareMovieData () přidá vzorové data do zobrazení v seznamu.

A máme hotovo 🙂

6) Přidání oddělovače RecyclerView

7) Přidání click listeneru

RecyclerView také nemá metodu OnItemClickListener pro kliknutí na položku. Musíte napsat svou vlastní třídu implementující RecyclerView.OnItemTouchListener. Vytvořte třídu s názvem RecyclerTouchListener.java:

Nakonec přidáme tento objekt jako listener k RecyclerView v activity:

 

Windows 10 – klávesové zkratky

Vylepšená schránka – stiskněte místo obvyklého Ctrl+V pro vložení zkratku Win+V. Uvidíte náhled schránky s historií. Tu můžete synchronizovat i na více zařízení.

Rychlé vkládání emoji s vyhledáváním – stiskněte během psaní Win + . (tečka) a vyjede nabídka s emoji, ve které můžete ihned začít vyhledávat požadovaný znak, a to v češtině. Pokud přispíváte na sociální sítě, toto se zatraceně hodí.

Rychlé pořízení výřezu – stiskněte Win+Shift+S a můžete vyříznout část obrazovky. Ten můžete okamžitě někam vložit, případně lze kliknutím na notifikaci v oznamovací oblasti otevřít zachycený snímek ve skicáku a doplnit ho poznámkami.

Android: Cleartext HTTP traffic to downloads.bbc.co.uk not permitted

Od Android 8 (Oreo) je defaultně zakázáno komunikovat po http – je nutné komunikovat po https. Pokud stahujete data ze zdroje, kde nemůžete ovlivnit nasazení https, lze toto pravidlo obejít přidáním níže uvedeného kódu do vaší aplikace.

Vytvoříme soubor: res/xml/network_security_config.xml

Do AndroidManifest.xm přidáme řádek: http://android:networkSecurityConfig=”@xml/network_security_config”

 

Debugování Retrofit požadavků

O tom, jak zprovoznit Retrofit jsme si již psali. Dnes se podíváme na to, jak získat více informací o tom, jak Retrofit funguje a jaké posílá a přijímá požadavky.

Začneme nainstalováním závislosti: com.squareup.okhttp3:logging-interceptor

Kde setLevel určuje úroveň logování: NONE, BASIC, HEADERS, BODY

Tím máme základní logování zprovozněno:

Pokud chcete logovat svým vlastním způsobem, můžete přetížit konstruktor:

 

Jak stáhnout .apk z Google Play

Klient má Android zařízení, které jsou pouze v interní síti, bez přístupu na internet. Přál by si na tyto zařízení dostat aplikace z Google Play. Jde to?

Ano, jde 🙂 Z Google Play je možné stáhnout .apk soubor, který se nainstaluje na zařízení. Existují na to nejrůznější webové stránky – ty mi ovšem většinou nefungují. Nejlepší zkušenosti mám s doplňkem do Chrome, APK Downaloader. Stačí nainstalovat do Chrome na PC, v Chrome najít aplikaci, zkopírovat URL do pluginu a stáhnout

 

ArtNet

ArtNet je protokol pro přenos DMX protokolu a RDP (Remote Device Management) po UDP (User Datagram Protocol) v IP (Internet Protocol). Zjednodušeně: vaše DMX nemusíte na stage táhnout několika linkami (universama) ale všechny najednou po “počítačovém síťovém” kabelu. Na stage máte krabičku, ko které je tonto “počítačový síťový kabel” zapojen. Z této krabičky už klasicky rozvedete jednotlivé DMX kabely do požadovaných světel.

Začínáme s ArtNet a ChamSys

Jak tedy začít? Já začal s převodníkem ArtNet – DMX 3 universe od http://www.blackout.sk. Převodník cenově vychází na 70€ a nabízí 3 universy.

Tento převodník má defaultně nastavenou IP: 192.168.0.99 a masku 255.255.255.0  Pro přihlášení do převodníku použijte tyto defaultní přístupové údaje: user: admin heslo: 12345  Není nutné ho nastavovat, po zakoupení je již vše nastaveno. Kompletní návod k ArtNet převodníku od blackout.sk

Proč jsem vybral ChamSys MagicQ PC

Pokud začínáte, vyprdněte se na Freestyler DMX a podobné programy pro začátečníky a jděte rovnou do něčeho na úrovni. Profíci s penězma valí MA lighting. Zbytek osvětlovačů, co se nechtějí učit nic nového (podle mne 🙂 ) valí Avolites – je to rider a všichni s tím umí. Já, vyzkoušel několik programů (především zdarma) ale jakmile jsem objevil ChamSys, zamiloval jsem se. Koketoval jsem i s Avolites Titan One ale nesednul mi.

Pokud nemáte peníze, pro začátek je ChamSys super v tom, že stačí ArtNet převodník a můžete používat 1 universe zcela zdarma (na ovládání světel). Nemáte žádné omezení na funkčnost. Pak až něco vyděláte, přikoupíte PC Wing Compact, pak Extra Wing Compact a s MagicQ MQ80 už máte dospělý pult bez nutnosti PC a můžete hrát vysokou osvětlovačskou ligu 🙂

Pojďme nastavit MagicQ PC na počítači

Stáhnete na PC MagicQ PC a nainstalujte. Náš ArtNet – DMX 3 universe má IP: 192.168.0.99, našemu PC kde máme nainstalovaný MagicQ PC nastavíme IP: 192.168.0.2 a ArtNet propojíme s PC síťovým kabelem.OK, nyní spustíme MagicQ PC. Jdeme do sekce Setup -> VIEW SETTINGS -> Network kde nastavíme tyto hodnoty:

  • IP address – stejnou jako má PC (192.168.0.2)
  • Subnet mask – defaultně 255.255.255.0
  • Gateway address – není nutná ale většinou 192.168.0.1

IP adresy máme nastavené, vyzkoušíme, že se z PC dostaneme na ArtNet převodník příkazem ping 192.168.0.99

V konzoli je vidět že IP adresa 192.168.0.99 odpovídá na ping, máme správně nastaveno.

Nyní nastavíme MagicQ aby universe 1 odesílal na ArtNet 0. Jdeme do sekce Setup -> VIEW DMX I/O

Nastavili jsme pro universe 1 status na enabled a pojmenovali jsme si ho na universe1.

To je vše 🙂 Nyní můžete napatchovat světla a začít používat.

Android: fragment worker

Dnes se podíváme na to, jak dělat složitější operace ve fragmentu při které se bude volat metoda z activity. Zaměříme se na to, jak správně napsat kód aby aplikace nespadla při otočení displeje.

Jednoduchá ukázka jak to nedělat:

MainActivity.java – klasická activity, která má veřejnou metodu worker, která by v praxi vykonávala nějakou operaci. Nyní pro ukázku vypíše pouze text do logu.

LoginFragment.java – jednoduchý fragment s tlačítkem. Po tapnutí na tlačítko, se spustí AsyncTask, který volá metodu worker z MainActivity

Pokud tento kód spustíte, zjistíte, že funguje. Bohužel po otočení displeje aplikace spadne….

Jak na to lépe?

Správná cesta je vytvoření static interface TaskCallbacks ve fragmentu, který implementujeme v activity. Metodu worker následně voláme přes mCallbacks.worker(“run” + i);

MainActivity.java

LoginFragment.java

Teď již při otáčení displeje není problém.