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



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

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

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

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

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

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

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

3. ŽIVOTNÍ CYKLUS ACTIVITY

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

KMI / TMA Tvorba mobilních aplikací

GPS Loc. Uživatelský manuál. mobilní aplikace. pro online přístup do systému GPS Loc pomocí mobilní aplikace

Navádění na cíl napřímo, mimo cesty a pěšiny. Použijte zejména při orientaci ve volném terénu.

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

MS OFFICE POWER POINT 2010

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

NÁVOD K OBSLUZE konfigurační SW CS-484

Konvertibilní Tablet STRUČNÁ PŘÍRUČKA 8085 LKB001X CJB1FH002ASA

Dokumentace k produktu IceWarp Notifikační nástroj

ADAPTÉR ROZHRANÍ PŘEHRÁVAČE D. KS-PD500 Než začnete používat tento adaptér

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

Přihlášení k webmailu a jeho nastavení

Svolávací systém Uživatelský manuál

Zapnutí Zmáčkněte jakékoli tlačítko. Vypnutí Gymboss se sám vypne po 5 minutách nečinnosti (nesmí být spuštěn odpočet), nebo ho můžete vypnout v menu.

T-Mobile Internet. Manager. pro Mac OS X NÁVOD PRO UŽIVATELE

Profesionální zajištění domácí bezpečnosti. Alarm Scan aplikace pro detektory X-Series Uživatelská příručka

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

Provozní pokyny Průvodce Mopria

Používání přehrávače ipod

NOVINKY V INTERNETOVÉM BANKOVNICTVÍ PRO PODNIKATELE ÚNOR 2019 SEZNAMTE SE S NOVINKAMI, KE KTERÝM JSTE NÁS INSPIROVALI.

Aplikace NAM tracker

Android 100% Java telefon. Petr Musil

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

2 PÁROVÁNÍ. Při prvním použití ZeCircle, Vás nastavovací zpráva vyzve k nastavení ZeCircle pomocí mobilního zařízení nebo počítače.

Aplikace Capture Pro. Referenční příručka. A-61640_cs

Chytré hodinky Actera

Dokumentace k mobilní aplikaci GoodCall

Noste náramek na zápěstí podobně jako hodinky. Při prvním použití se ujistěte, zda je baterie nabitá. Slabá baterie způsobí vypnutí a

A/C DÁLKOVÝ OVLÁDAČ NÁVOD K OBSLUZE

Principy objektově orientovaného programování

2. Kontakty. 1. Základní nastavení telefonu Vložení SIM karty Vložení paměťové karty Zapnutí telefonu a PIN. 3. Volání

2. Kontakty. 1. Základní nastavení telefonu Vložení SIM a paměťové karty Zapnutí telefonu a PIN. 3. Volání

Programování v Javě I. Leden 2008

Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu.

Služby a nastavení Reset přístroje do továrního nastavení Seznam pevné volby Identifikace volajícího (CLIP/CLIR) Pevná volba Aplikace Vyhledání a

Aplikace Založení účtu Microsoft a stažení aplikace Internet Nastavení u Připojení/odpojení Wi-Fi sítě Nastavení internetu v zahraničí

Meeting Asistent. Manuál pro instalaci a ovládání aplikace. Nokia + Sony Ericsson telefony s OS Symbian

2. Kontakty. 1. Základní nastavení tabletu Vložení SIM karty Vložení paměťové karty Zapnutí tabletu a PIN. 3. Volání

Aplikace Vyhledání a stažení aplikace Založení BlackBerry ID Internet Nastavení u Zap./Vyp. přístupového bodu Přihlášení do Wi-Fi sítě

Polohovací zařízení a klávesnice

ČSOB Business Connector

Uživatelská příručka MotionX-365

GPS Loc. Uživatelský manuál. webové rozhraní. pro online přístup do systému GPS Loc přes webové uživatelské rozhraní app.gpsloc.eu

Kontakty Upravení kontaktu - změna údájů Přidání fotky ke kontaktu Založení nového kontaktu Kopírování ze SIM karty do telefonu Základní nastavení

REG10. návod k použití. záznamová jednotka stavů logických vstupů CBF

Vyšívací stroj Dodatek k uživatelské příručce

1. Aplikace Vyhledání a stažení aplikace Založení BlackBerry ID. 2. Internet. 3. Zabezpečení

BRICSCAD V15. Licencování

Návod k použití. O 2 TV Nahrávání

První kapitola úvod do problematiky

ČSOB Business Connector Instalační příručka

Prosím mějte na paměti, že z bezpečnostních důvodů byste měli změnit Internetový přístupový kód každých 60 dní.

IRISPen Air 7. Stručná uživatelská příručka. (Android)

T-Mobile Internet. Manager. pro Windows NÁVOD PRO UŽIVATELE

Nápověda pro možnosti Fiery 1.3 (server)

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

Aplikace CamHi. Návod k obsluze. Kontakt na dodavatele: SHX Trading s.r.o. V Háji 15, Praha 7, Tel: ,

S CAPTCHA Help doplňkem o krok dál

ČSOB Business Connector instalační příručka

2. Kontakty. 1. Základní nastavení telefonu Vložení SIM karty a baterky Vložení paměťové karty Zapnutí telefonu a PIN. 3. Volání

Používání Webových služeb pro skenování v síti (operační systém Windows Vista SP2 nebo novější, Windows 7 a Windows 8)

Windows Live Movie Maker

STRUČNÁ PŘÍRUČKA. Instalace ovladačů Nokia Connectivity Cable Drivers

ELEKTRONICKÝ KLÍČ 1103

Ovládání IP telefonů Well YV2 a YV3

HP-2000E UŽIVATELSKÝ MANUÁL

SMS Manager & HAIRSOFT MANUÁL

Polohovací zařízení a klávesnice Uživatelská příručka

IRISPen Air 7. Stručná uživatelská příručka. (ios)

Základní nastavení telefonu Vložení paměťové karty Zapnutí telefonu a PIN Vložení SIM karty SMS a MMS Nastavení střediska zpráv Nastavení MMS

Nielsen Admosphere, a.s. Vážená domácnosti,

Dell UltraSharp U2518D/U2518DX/U2518DR Dell Display Manager Uživatelská příručka

1. Základní nastavení telefonu Vložení SIM karty a baterky Vložení paměťové karty Zapnutí telefonu a PIN. 2. Kontakty. 3. Volání

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Smar-Band 107HR. Uživatelská příručka

Metodický list k didaktickému materiálu

Návod pro Sony Xperia Z5

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí

1. Základní nastavení telefonu Vložení SIM karty Vložení paměťové karty Zapnutí telefonu a PIN. 2. Kontakty. 3. Volání

Dell UltraSharp U2417HA Dell Display Manager Uživatelská příručka

Cubot R8 podrobný návod k použití

Volání Hlasitý hovor Zobrazení kontaktů při volání Nastavení hlasitosti hovoru Zobrazení klávesnice při volání Přidržení hovoru Číslo hlasové

BeoSound Příručka

Bohuslav Mach, Správce úkolů. pro informační systém firmy s-cape.cz 1/6

2. Kontakty. 1. Základní nastavení telefonu Vložení SIM a paměťové karty Zapnutí telefonu a PIN. 3. Volání

Instalace pluginů pro formuláře na eportálu ČSSZ

STRUČNÁ PŘÍRUČKA. Instalace ovladačů Nokia Connectivity Cable Drivers

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

1. Stažení aplikace irunning do tabletu Aplikaci naleznete pod názvem [irunning+] na stránkách Google Play/iTune Store.

Transkript:

Notifikace, alarmy KAPITOLA 6 V této kapitole: Notifikace Alarmy Notifikace Notifikace jsou zprávy, někdy i rozsáhlejší, které potřebuje aplikace ve vhodné situaci zobrazit uživateli mimo běžné uživatelské rozhraní aplikace. Android podporuje dva různé druhy upozornění. Zprávy Toast, jejichž název je odvozen od toho, že zpráva vyskočí na obrazovku aplikace doslova jako topinka z topinkovače. Zprávy Toast jako nejjednodušší prostředek na výpis textu jste už mnohokrát použili v aplikacích v předchozích kapitolách. Druhým typem je oznámení v oznamovací oblasti nebo panelu oznámení. Tato oznámení jsou viditelná a mohou přistupovat k systémům řízení oznamovací oblasti v horní části zařízení. Poznámka: Notifikace se často používají k upozornění uživatele, že nějaká činnost, která trvá déle, byla dokončena. Typickým příkladem je stahování souborů z Internetu. Příklad zobrazení toastu s vlastním designem Klasický toast je text na pozadí, který se zobrazí v okénku. V tomto příkladu vytvoříte vlastní návrh okna toastu a kromě textu zobrazíte i obrázek. S návrhem layoutu si nemusíte dělat žádné starosti, stačí na plochu hlavní aktivity přidat tlačítko. <LinearLayout xmlns:android= http://schemas.android.com/apk/res/android android:layout_height= match_parent android:orientation= vertical > android:id= @+id/bttoast android:layout_width= wrap_content android:onclick= onclick 169

KAPITOLA 6 Notifikace, alarmy android:text= Toast /> </LinearLayout> Více pozornosti budeme věnovat návrhu vlastního layoutu toastu v souboru muj_toast.xml. Layout obsahuje prvek ImageView na zobrazení ikony a TextView na zobrazení textu oznámení. <RelativeLayout xmlns:android= http://schemas.android.com/apk/res/android android:id= @+id/toast_layout_root android:orientation= horizontal android:layout_width= wrap_content android:padding= 10dp android:background= #7777 > <ImageView android:id= @+id/image android:layout_width= 64dp android:layout_height= 64dp android:layout_marginright= 10dp android:src= @drawable/ic_launcher android:layout_centervertical= true android:contentdescription= popis /> <TextView android:id= @+id/text android:layout_width= wrap_content android:textcolor= #FFF android:text= Text oznámení! android:layout_centervertical= true android:layout_torightof= @id/image android:textsize= 40sp /> </RelativeLayout> Kód hlavní aktivity po stisknutí tlačítka zobrazí toast. V metodě setview se naplní layout toastu z XML souboru. public class MainActivity extends Activity Obrázek 6.1: Zobrazení toastu s vlastním layoutem public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); public void onclick(view View) Toast toast = new Toast(getApplicationContext()); toast.setgravity(gravity.center_vertical, 0, 0); toast.setduration(toast.length_long); toast.setview(getlayoutinflater().inflate(r.layout.muj_toast,null)); toast.show(); 170

Notifikace Příklad poslání notifikace Nevýhodou toastu je, že se na definovanou dobu zobrazí a potom zmizí. Pokud se uživatel právě na displej nedívá, notifikaci neuvidí. V následujícím příkladu pošle aplikace notifikaci, která se zobrazí v oznamovací oblasti, kde si ji uživatel může kdykoliv zobrazit. Pomocí panelu oznámení mohou aplikace i Android samotný informovat uživatele o různých událostech. Panel oznámení je možné gestem tažení prstu směrem dolů vysunout a zobrazit další informace, které byly umístěny v oznamovací oblasti. Upozornění: Z procesu běžícího na pozadí, bez ohledu na to, zda se jedná o službu nebo Broadcast Receiver, nespouštějte aktivity přímo. Určitě byste se uživateli nezavděčili, spíš byste jej rozzlobili, jelikož nevíte, co právě dělá nebo co má v úmyslu. Namísto toho vytvořte notifikaci, která mu poskytne požadovanou informaci, a uživatel se sám rozhodne, zda spustí nějakou aplikaci. Aby bylo možné přehrání zvuku, vytvořte ve složce res složku raw a do ní nakopírujte soubor ve formátu MP3 se zvukem, který má zaznít při upozornění. Soubor se zvukem snadno získáte z Internetu. Layout hlavní aktivity obsahuje jedno tlačítko, podobně jako v předchozí aplikaci. Liší se jen textem, jelikož neposíláme toast, ale notifikaci. <LinearLayout xmlns:android= http://schemas.android.com/apk/res/android android:layout_height= match_parent android:orientation= vertical > android:id= @+id/btnotifikace android:layout_width= wrap_content android:onclick= onclick android:text= Notifikace /> </LinearLayout> Abychom demonstrovali co nejvíce funkcionality týkající se oznámení, vytvoříme další aktivitu. Tato se spustí, když uživatel klepne na oznámení v panelu oznámení. Aktivita v tomto příkladu vypíše konstantní textové oznámení. V reálné aplikaci by vypsala podrobnosti o události, která notifikaci vyvolala. Layout v souboru activity_notif.xml: <LinearLayout xmlns:android= http://schemas.android.com/apk/res/android android:layout_height= match_parent android:orientation= vertical > <TextView android:id= @+id/textview1 android:layout_width= wrap_content 171

KAPITOLA 6 Notifikace, alarmy android:text= Aktivita spuštěna z oznámení android:textsize= 24sp > </TextView> </LinearLayout> Soubor NotifActivity.java: public class NotifActivity extends Activity protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_notif); Nezapomeňte tuto aktivitu přidat do seznamu aktivit v souboru AndroidManifest.xml. <activity android:name=.notifactivity /> V kódu hlavní aktivity definujeme texty nadpisu a textu oznámení a také zvuk a vzor vibrací, které uživatele na oznámení upozorní. V metodě oncreate vytvoříme záměr, který se odešle po klepnutí na oznámení v panelu oznámení. Záměr spustí aktivitu NotifActivity. Ke správě notifikací je určena systémová služba NotificationManager. Notifikace bude definovaná prostřednictvím objektu Notification.Builder. public class MainActivity extends Activity private static final int NOTIF_ID = 1; private int pocetnotifikaci; private Intent notifintent; private PendingIntent pendingintent; private final CharSequence ticker = Lorem ipsum dolor sit amet...! ; private final CharSequence nadpis = Notifikace ; private final CharSequence oznam = Máš notifikaci! ; private Uri sounduri = Uri.parse( android.resource://com.example.notifikace1/ + R.raw.alarm); private long[] vibrace = 0, 300, 200, 300 ; public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); notifintent = new Intent(getApplicationContext(), NotifActivity.class); pendingintent = PendingIntent.getActivity(getApplicationContext(), 0, notifintent, Intent.FLAG_ACTIVITY_NEW_TASK); 172

Notifikace public void onclick(view View) Notification.Builder notificationbuilder = new Notification.Builder( getapplicationcontext()).setticker(ticker).setsmallicon(android.r.drawable.stat_sys_warning).setautocancel(true).setcontenttitle(nadpis).setcontenttext(oznam + ( + ++pocetnotifikaci + ) ).setcontentintent(pendingintent).setsound(sounduri).setvibrate(vibrace); NotificationManager mnotificationmanager = (NotificationManager) getsystemservice(context.notification_service); mnotificationmanager.notify(notif_id, notificationbuilder.build()); Po stisknutí tlačítka aplikace vyšle systému notifikaci. Ta se projeví zvukem, vibrací, zobrazením ikony v oznamovací oblasti a postupným rolováním textu. Úmyslně jsme zadali dlouhý text, aby se rolování projevilo. Po odrolování textu zůstane zobrazená pouze ikona notifikace. Po zobrazení panelu oznámení se zobrazí oznámení vaší aplikace. To sestává z ikony, názvu, textu oznámení a data. Oznámení také obsahuje číslo v závorkách, které udává, kolikrát bylo oznámení přijato. Zkuste poslat oznámení z aplikace znovu a toto číslo v závorkách se bude inkrementovat. Obrázek 6.2: Test aplikace posílající notifikaci Pokud uživatel klepne na oznámení v okně notifikačního centra, spustí se druhá aktivita aplikace, která vypíše textové oznámení. Obrázek 6.3: Aktivita spuštěná po klepnutí na notifikaci 173

KAPITOLA 6 Notifikace, alarmy Alarmy V dosud probíraných příkladech aplikace realizovala činnost, případně sekvenci činností, ihned po spuštění. Často se však vyskytuje požadavek, aby aplikace dělala něco v přesně stanovený čas, například aby za 15 minut uživatele na něco upozornila, případně aby něco dělala periodicky. K tomuto účelu slouží alarmy. Poznámka: Alarm na platformě Android je mechanizmus umožňující poslání objektu intent do budoucnosti, do přesně definovaného časového okamžiku nebo do více časových okamžiků. Úlohou aplikace je vytvořit a nastavit alarmy. K tomuto účelu je k dispozici rozhraní Alarm Manager, umožňující nastavení a zrušení alarmů. Po vytvoření a nastavení alarmů a ukončení aplikace, která to realizovala, může zařízení přejít do režimu spánku a aktivuje se až v definovaný časový okamžik. Upozornění: Alarmy nastavené aplikacemi budou zrušeny po úplném vypnutí, případně restartování zařízení. Vytvoření alarmu Pomocí metody getsystemservice(context.alarm_service) musí aplikace nejprve získat referenci na AlarmManager. Jednorázový alarm nastavíte pomocí metody void set(int typ, long casaktivace, PendingIntent operace) K nastavení alarmu opakujícího se v periodických časových intervalech použijete metodu void setrepeating(int typ, long casaktivace, long interval, PendingIntent operace) Nebo můžete použít metodu void setinexactrepeating(int typ, long casaktivace, long interval, PendingIntent operace) Poznámka: Počínaje verzí API 19 (KitKat) jsou všechny alarmy aktivované jako inexact, což ve verzích API <=18 zabrání opakovanému buzení zařízení při více těsně za sebou jsoucích alarmech. Jak vyplývá z názvu inexact (nepřesný), alarm se nemusí aktivovat v přesně nastaveném čase, ale například zařízení se probudí a alarm aktivuje současně s jiným alarmem nastaveným na vhodnou dobu. Třeba když je dvojice alarmů inexact naplánovaná s 15sekundovým zpožděním, systém je aktivuje současně. Takovéto nastavení se dá použít tam, kde na přesném čase nezáleží, například u připomínky, že je potřeba nakrmit rybičky v akváriu a podobně. K definování intervalu je v metodě setinexactrepeating potřeba použít předdefinované konstanty: 174

Alarmy INTERVAL_FIFTEEN_MINUTES INTERVAL_HALF_HOUR INTERVAL_HOUR INTERVAL_HALF_DAY INTERVAL_DAY Parametr typ určuje, jakým způsobem se interpretuje parametr casaktivace: buď jako reálný čas, kdy hodnota parametru udává počet milisekund od půlnoci 1. ledna 1970 (RTC_...), nebo jako relativní čas od posledního spuštění systému (ELAPSED_...). Tento parametr zároveň určuje chování systému v případě, že nastal čas alarmu. Jednou z možností je probudit zařízení v okamžiku alarmu a doručit záměr (RTC_WAKEUP), druhou pokračovat ve stavu sleep a záměr doručit při nejbližším probuzení zařízení (RTC). Příklad ověření funkcionality alarmů Na praktické ověření jednotlivých typů alarmů vytvoříme cvičný příklad. Jeho uživatelské rozhraní tvoří čtyři tlačítka. První tři aktivují alarmy a třetí slouží ke zrušení opakování alarmu. <LinearLayout xmlns:android= http://schemas.android.com/apk/res/android android:layout_width= fill_parent android:layout_height= fill_parent android:orientation= vertical > android:id= @+id/bt_single android:text= @string/nastav_single > </Button> android:id= @+id/bt_repeating android:text= @string/nastav_repeat /> android:id= @+id/bt_inexact android:text= @string/nastav_inexact /> android:id= @+id/bt_zrus android:text= @string/zrus_repeat /> </LinearLayout> Obrázek 6.4: Uživatelské rozhraní aplikace 175

KAPITOLA 6 Notifikace, alarmy Pro úplnost uvádíme i texty definované v souboru strings.xml. <resources> <string name= app_name >Alarm Demo</string> <string name= text_upozorneni >Nakrm rybičky!</string> <string name= nastav_single >Nastav Single Alarm</string> <string name= nastav_repeat >Nastav Repeating Alarm</string> <string name= nastav_inexact >Nastav Inexact Repeating Alarm</string> <string name= zrus_repeat >Zruš Repeating Alarm</string> </resources> Dříve než přistoupíte k programování kódu hlavní aktivity, vytvořte třídu odvozenou od Broadcast Receiver, která bude přijímat záměry a zobrazovat notifikace. Abychom demonstrovali i přehrání zvuku, vytvořte ve složce res složku raw a do ní nakopírujte soubory ve formátu MP3 se zvukem, který má zaznít při alarmu. Soubor se zvukem alarmu snadno získáte z Internetu. Alarm se projeví i jako sekvence vibrací. public class NotifReceiver extends BroadcastReceiver private static final int NOTIF_ID = 1; private static final String TAG = NotifReceiver ; private Intent notifintent; private PendingIntent pendintent; //zvuk a vibrace private Uri sounduri = Uri.parse( android.resource://com.example.alarmdemo/ + R.raw.alarm); private long[] mvibratepattern = 0, 300, 100, 300 ; public void onreceive(context context, Intent intent) notifintent = new Intent(context, MainActivity.class); pendintent = PendingIntent.getActivity(context, 0, notifintent, Intent.FLAG_ACTIVITY_NEW_TASK); Notification.Builder notificationbuilder = new Notification.Builder(context).setTicker( Upozornění! ).setsmallicon(android.r.drawable.stat_sys_warning).setautocancel(true).setcontenttitle( Nezapomeň ).setcontenttext( nakrmit rybicky!! ).setcontentintent(pendintent).setsound(sounduri).setvibrate(mvibratepattern); NotificationManager notifmanag = (NotificationManager) context.getsystemservice(context.notification_service); notifmanag.notify(notif_id, notificationbuilder.build()); Log.i(TAG, Notifikace: + DateFormat.getDateTimeInstance().format(new Date())); 176

Alarmy V kódu hlavní aktivity je inicializace objektu AlarmManager, vytvoření záměru pro notifikační BroadcastReceiver a v obsluze událostí klepnutí na tlačítka nastavení jednotlivých typů alarmů. V reálné aplikaci byste nastavení alarmu oznámili uživateli, například přes toast. public class MainActivity extends Activity private AlarmManager alarmmanag; private Intent notifintent; private PendingIntent notifpendingintent; private static final long SPOZDENI = 30000L; public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); alarmmanag = (AlarmManager) getsystemservice(alarm_service); notifintent = new Intent(MainActivity.this, NotifReceiver.class); notifpendingintent = PendingIntent.getBroadcast(MainActivity.this, 0, notifintent, 0); final Button btsingle = (Button) findviewbyid(r.id.bt_single); btsingle.setonclicklistener(new OnClickListener() public void onclick(view v) alarmmanag.set(alarmmanager.rtc_wakeup, System.currentTimeMillis() + SPOZDENI, notifpendingintent); ); final Button btrepeating = (Button) findviewbyid(r.id.bt_repeating); btrepeating.setonclicklistener(new OnClickListener() public void onclick(view v) alarmmanag.setrepeating(alarmmanager.elapsed_realtime, SystemClock.elapsedRealtime() + SPOZDENI, AlarmManager.INTERVAL_FIFTEEN_MINUTES, notifpendingintent); ); final Button btinexact = (Button) findviewbyid(r.id.bt_inexact); btinexact.setonclicklistener(new OnClickListener() public void onclick(view v) 177

KAPITOLA 6 Notifikace, alarmy ); alarmmanag.setinexactrepeating( AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + SPOZDENI, AlarmManager.INTERVAL_FIFTEEN_MINUTES, notifpendingintent); final Button cancelrepeatingalarmbutton = (Button) findviewbyid(r.id.bt_zrus); btsingle.setonclicklistener(new OnClickListener() public void onclick(view v) alarmmanag.cancel(notifpendingintent); ); Nezapomeňte do souboru AndroidManifest.xml přidat receiver: <receiver android:name=.notifreceiver > </receiver> Obrázek 6.5: Notifikace 178