KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Podobné dokumenty
(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Práce na pozadí. Služby. Notifikace

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 11. Přednáška. Broadcast receiver Timer Alarmy Widgety

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Jazyk C# (seminář 6)

KMI / TMA Tvorba mobilních aplikací

3. ŽIVOTNÍ CYKLUS ACTIVITY

DUM 06 téma: Tvorba makra pomocí VBA

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Více o konstruktorech a destruktorech

Začínáme s vývojem pro Android

20. Projekt Domácí mediotéka

Projekt Obrázek strana 135

15. Projekt Kalkulačka

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Generické programování

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

Teoretické minimum z PJV

Základy objektové orientace I. Únor 2010

KMI / TMA. Tvorba mobilních aplikací. 3. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

První seznámení s mobilní aplikací PATRIOT GPS

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Výčtový typ strana 67

Konstruktory a destruktory

SPRÁVA NÁKLADŮ NA PROVOZ AUTOMOBILU PRO ANDROID

Tvorba informačních systémů

Knihovna XBMCLib TXV druhé vydání květen 2014 změny vyhrazeny

Komponenty v.net. Obsah přednášky

Jazyk C# (seminář 3)

Abstraktní třída a rozhraní

Programování v C++ 2, 4. cvičení

Dynamicky vázané metody. Pozdní vazba, virtuální metody

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Programování v C++ 3, 3. cvičení

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Manuál pro uživatele ios. *pro aplikaci CONNECTED WATCH

Remote Method Invocation RMI

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

8 Třídy, objekty, metody, předávání argumentů metod

Android 100% Java telefon. Petr Musil

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Příklad zobrazení toastu s vlastním designem

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

PROGRAM SKYPE. Návod Skype. VERZE NÁVODU A PROGRAMU VYUŽITÍ PRO V TOMTO NÁVODU SE NAUČÍTE. STÁHNUTÍ A INSTALACE

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

KMI / TMA Tvorba mobilních aplikací

Manuál pro uživatele OS Android. *pro aplikaci CONNECTED WATCH

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Služba ve Windows. Služba (service) je program

Programujeme v softwaru Statistica

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

Programování v jazyku C# II. 9.kapitola

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Praktické šifrování dat pomocí programu PGP

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.

Úvod do programovacích jazyků (Java)

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Knihovna SolarMonitorLib

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Mobilní malware na platformě Android Přednáška 1. Ing. Milan Oulehla

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Dynamické datové struktury IV.

XAMARIN 10 PRAKTICKÝCH ZKUŠENOSTÍ. Roman Fischer

VDDMAIL by ESCAD, Corp. (Součást IWSE.NET Services by ESCAD, Corp.)

Po přihlášení do Osobní administrativy v Technologie a jejich správa vybereme položku Certifikáty bezdrátové sítě (Eduroam).

Manuál pro uživatele ios *pro aplikaci CONNECTED WATCH

Windows 10 (5. třída)

Windows 8.1 (5. třída)

Úvod do programování - Java. Cvičení č.4

Programování v jazyce JavaScript

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI]

usimt01 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM01 NA PC Příručka uživatele a programátora

Virtuální metody - polymorfizmus

1. Přihlášení Ke spuštění Webové aplikace potřebuje rodič a žák či učitel pouze internetový prohlížeč, do kterého zadá adresu Vašeho webového

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

PREPROCESOR POKRAČOVÁNÍ

Zprávy z TC a egon centra ORP Nový Bydžov č. 29,

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Příloha 6. Palety nástrojů

Programování v Javě I. Únor 2009

Festivalova mobilnı aplikace

Programujeme v softwaru Statistica - příklady

NIBE Uplink Uživatelská příručka

IRAE 07/08 Přednáška č. 1

Diplomová práce. Rozvrh hodin pro

Programování v C++ 1, 6. cvičení

Po přihlášení do Osobní administrativy v Technologie a jejich správa vybereme položku Certifikáty bezdrátové sítě (Eduroam).

Aplikace gdmss, idmss V

Transkript:

KMI / TMA Tvorba mobilních aplikací 8. seminář 16.11.2017 ZS 2017/2018 ČTVRTEK 13:15-15:45

OBSAH SEMINáře Komunikace napříč aplikací, Práce na pozadí II., notifkace

práce na pozadí II. Něco lepšího než AsyncTask? pro fexibilnější práci na pozadí využijeme tzv. služby, které zajišťuje třída Service používají se pro práci na pozadí, která není závislá na aktivitě, např. stahování souboru, přehrávání hudby bez aktivity, aj. mají svůj životní cyklus podobně jako aktivity

práce na pozadí II. Vytvoření služby službu vytvoříme zděděním třídy Service implementujeme onstartcommand, která se vykoná, pokud službu spustíme je třeba implementovat onbind, většinou může vracet null

práce na pozadí II. spuštění služby onstartcommand musí vracet jednu z konstant, které určují, jak se služba bude chovat, pokud je proces aplikace ukončen při běhu služby Service.START_STICKY Service.START_REDELIVER_INTENT Service.START_NOT_STICKY

práce na pozadí II. Vytvoření služby

práce na pozadí II. Defnice služby v manieestu službu musíme defnovat v manifestu atribut android:name ukazuje na cestu k potomku třídy Service

práce na pozadí II. spuštění služby zavoláme startservice(intent), kde intent je instance Intentu, který defnuje jakou třídu chceme spustit, případně ji předává argumenty (pomocí metod put*) vykonání je asynchronní, služba je spuštěna na pozadí, nicméně onstartcommand je vykonáno v UI vlákně, doporučuje se ve službě vytvořit nové vlákno

práce na pozadí II. Ukončení služby odkudkoli můžeme zavolat metodu stopservice(intent), kde intent defnuje třídu služby ze služby můžeme zavolat metodu stopself

práce na pozadí II. předpřipravená služba pro jednodušší použití služeb je k dispozici potomek Service = IntentService používá se pro krátkodobé práce na pozadí, služba se po vykonání sama ukončí navíc nabízí metodu onhandleintent, která pracuje v novém vlákně a zpracovává intent předaný v startservice v konstruktoru bez parametrů je nutné zavolat konstruktor předka se jménem služby

práce na pozadí II. Spolupráce aktivity a služby oncreate() startservice(intent) oncreate() Activity A onstartcommand (Intent) ondestroy() Service oncreate() ondestroy() Activity B stopservice(intent) ondestroy()

práce na pozadí II. obousměrná komunikace pomocí onstartcommand nebo onhandleintent předáme data z aktivity do služby pokud chceme předat data ze služby do aktivity (např. výsledek), můžeme využít: BroadcastReceiver EventBus, (3 rd knihovny) notifkace

Naslouchání událostem BroadcastReceiver používáme, pokud chceme zpracovávat zajímavé události ze strany systému, např. změna hladiny baterie, změna času, můžeme také využít pro naše vlastní události z jiné komponenty (Service) nebo události z jiné aplikace

Naslouchání událostem Defnice IntentFilter vytvoříme IntentFilter, kterému defnujeme, akce typu String, kterým chceme naslouchat systémové akce např. Intent.ACTION_TIME_TICK, Intent.ACTION_ (a další) můžeme si defnovat vlastní události, např. String my_event

Naslouchání událostem Vytvoření BroadcastReceiveru BroadcastReceiver je objekt, který bude události zpracovávat vytvoříme instanci jako členskou proměnnou, ve které je nutné implementovat metodu onreceive, která nám předá Context a přijatý Intent

Naslouchání událostem Registrace globálních událostí BroadcastReceiver zaregistrujeme v onresume pomocí registerreceiver nesmíme zapomenout na odregistrování v onpause pomocí unregisterreceiver mezi onresume a onpause tak dostáváme globální události ze systému, ale i z jiných aplikací

Naslouchání událostem Registrace lokálních událostí pokud nás zajímají pouze naše lokální akce, potom použijeme pro registraci a odregistraci LocalBroadcastManager

Naslouchání událostem

Naslouchání událostem Práce s BroadcastReceiverem BroadcastReceiver žije pouze po dobu vykonání onreceive, nemůžeme tedy např. spustit práci na jiném vlákně onreceive je zavolána na UI vlákně v přijatém Intentu některých událostí nalezneme zajímavá data, např. hladinu baterie při ACTION_BATTERY_CHANGED

Naslouchání událostem Práce s BroadcastReceiverem registerreceiver(receiver, new IntentFilter(Intent. ACTION_TIME_TICK)) ACTION_TIME_TICK onreceive() onreceive() onreceive() unregisterreceiver(receiver)

Naslouchání událostem Zasílání událostí pro zaslání události vytvoříme prázdný Intent, kterému nastavíme akci, které nasloucháme můžeme předat data zpět pomocí přidání extra dat

Naslouchání událostem Zasílání událostí zaslání události: globální události sendbroadcast(intent i) lokální události LocalBroadcastManager. getinstance(context context).sendbroadcast(intent i)

práce na pozadí II. Spolupráce aktivity a služby registrace ACTION přijetí akce ACTION odregistrace Activity A startservice(intent) zaslání broadcast s akcí ACTION Service vytvoření služby vykonání onstartcommand registrace ACTION přijetí akce ACTION odregistrace Activity B zaslání broadcast s akcí ACTION stopservice(intent) vypnutí služby

notifikace ve status baru Notifcation zobrazení upozornění často o průběhu nebo výsledku práce na pozadí mnoho možností vzhledu a funkcí notifkací, např. notifkace s ovládaním hudebního přehrávače použití ve spojení s push notifkacemi ze vzdáleného serveru

notifikace ve status baru Vytvoření notifkace vytvoření instance builderu a pomocí set* metod nastavení vlastností notifkace

notifikace ve status baru nastavení notifkace builder.setcontenttitle( ) titulek notifkace, String nebo stringres builder.setcontenttext( ) text notifkace, String nebo stringres builder.setsmallicon( ) malá ikona ve status baru, drawableres

notifikace ve status baru nastavení notifkace builder.setcontentintent( ) akce, která se provede po kliku na notifkaci přijímá PendingIntent ten vytvoříme z klasického Intent PendingIntent.getActivity (this, 0, intent, 0)

notifikace ve status baru nastavení notifkace builder.setautocancel booleovská hodnota, pokud je true, potom notifkace po kliku provede akci a zmizí builder.setdefaults nastavení upozornění, jedna z konstant Notifcation.DEFAULT_LIGHTS, DEFAULT_ SOUND, DEFAULT_VIBRATE, DEFAULT_ALL

notifikace ve status baru nastavení notifkace builder.setprogress a mnoho dalšího, viz dokumentace po nastavení všech vlastností nutné zavolat metodu build pro získání instance Notifcation

notifikace ve status baru nastavení notifkace pro zobrazení notifkace je nutné získat instanci systémové služby NotifcationManager a notifkaci zobrazíme pomocí notify typ notifkace defnujeme identifkátorem typu int

notifikace ve status baru následná práce s notifkací identifkátor slouží pro zrušení notifkace pomocí metody cancel pro zrušení všech notifkací slouží metoda cancelall nahrazení notifkace zobrazením jiné notifkace se stejným identifkátorem

ÚKOL 8. semináře 1) přepsat stahování TODO položek z AsyncTask s použitím Service, tj. spuštění služby, stáhnutí na pozadí a zaslání události o dokončení do aktivity 2) při začátku stahování zobrazit notifkaci s progress barem 3) po úspěchu zobrazit notifkaci, která nahradí notifkaci stahování 4) při chybě (např. vypnutém internetu) zobrazit notifkaci, která nahradí notifkaci stahování Tipy pro řešení: 1) ve službě nemáte přístup k aktivitě, služba by tedy neměla znát implementaci aktivity, ale měla by získat vstupní parametry, zpracovat akci a informovat všechny příjemce o provedení akce nezávisle na tom, kdo události naslouchá 2) služba by se měla starat o vše spojené se stahováním, tedy i zobrazení notifkací 3) čisté řešení je, že aktivita po přijetí akce pouze aktualizuje seznam

Otázky Ptejte se!