akademia androida Service, BroadcastReceiver, ContentProvider część IV



Podobne dokumenty
Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Android, wprowadzenie do SDK

Systemy operacyjne na platformach mobilnych

akademia androida Intencje oraz URI część III

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Tworzenie i wykorzystanie usług

Obsługa SMS i telefonii

akademia androida Składowanie danych część VI

Programowanie usług działających w tle

Fragmenty są wspierane od Androida 1.6

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

akademia androida Http i AsyncTask część VII

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Powiadomienia w systemie Android

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych

Klasy abstrakcyjne i interfejsy

komunikator na platformę Android wspierający protokół GG

akademia androida Pierwsze kroki w Androidzie część I

Android tworzenie aplikacji mobilnych

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

Aplikacje w Javie- wykład 11 Wątki-podstawy

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Intencje nadawcze. Aktywności mogą rozsyłać komunikaty do wszystkich zainstalowanych aplikacji

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie obiektowe

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

Mechanizm powiadomień

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Programowanie obiektowe

akademia androida Sensory część V Mobile Applications Developers

Zaawansowane aplikacje WWW - laboratorium

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Wątki w Javie. Piotr Tokarski

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Laboratorium 9 (Więcej Aktywności, w Androidzie)

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Android. Zarz dzanie cyklem»ycia i stanem. Piotr Fulma«ski. March 10, 2015

Tworzenie aplikacji na platformie Android

Java Podstawy. Michał Bereta

Aplikacje w środowisku Java

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie dla Androida. Ubiquitous

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

[Android] Podstawy programowania

Klasy abstrakcyjne, interfejsy i polimorfizm

1 Atrybuty i metody klasowe

Tłumaczenie i adaptacja materiałów: dr Tomasz Xięski. Na podstawie prezentacji udostępnionych przez Victor Matos, Cleveland State University.

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Architektury Usług Internetowych. Laboratorium 3. Usługi w środowisku wielo-agentowym

Technologie i usługi internetowe cz. 2

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

AKADEMIA MŁODYCH ODKRYWCÓW

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Podstawowe elementy GUI - zadania

Aplikacje RMI

Programowanie obiektowe

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wprowadzenie do systemu Android

Aplikacje RMI Lab4

Java. Programowanie Obiektowe Mateusz Cicheński

I. Usługi. Usługa może przyjąć dwie formy:

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Technologie internetowe w programowaniu.

Kontenery i komponenty graficzne

Programowanie obiektowe i zdarzeniowe

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

INSTRUKCJA DO ĆWICZENIA 13. Animacja wielowątkowa w aplikacjach JME. Gra logistyczna.

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Builder (budowniczy) Cel: Przykład:

Architektury usług internetowych. Laboratorium 5. JADE

Android poradnik programisty

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

KLASY, INTERFEJSY, ITP

Kurs programowania. Wykład 8. Wojciech Macyna

SOP System Obsługi Parkingów

Transkrypt:

akademia androida Service, BroadcastReceiver, ContentProvider część IV

agenda 1. BroadcastReceiver 2. Service 3. ContentProvider 4. Zadanie 1. 5. Zadanie 2 (domowe).

1. BroadcastReceiver BroadcastReceiver jest jednym z czterech komponentów Androida (obok komponentów Activity, Service oraz ContentProvider). Jest to komponent, który przechwytuje intencje rozgłoszone globalnie. W poprzedniej części intencje służyły do poruszania się między aktywnościami lub uruchomienia żądanej akcji, w tym wypadku informują one, że jakaś akcja (uruchomienie telefonu, SMS, połączenie przychodzące) miała miejsce w systemie. Jeżeli nasza aplikacja będzie posiadać komponent BroadcastReceiver wtedy możemy na tego typu wydarzenia odpowiednio zareagować. Aby stworzyć BroadcastReceiver w pliku AndroidManifest.xml dodajemy element <receiver> wraz z filtrem intencji określającym na jakie intencje będzie on reagował. Nazwa to nazwa klasy, która dziedziczy po BroadcastReceiver. Przykładowo: <uses-permission android:name="android.permission.receive_sms" />... <receiver android:name=".mysmsreceiver" > <intent-filter> <action android:name="android.provider.telephony.sms_received" /> </intent-filter> </receiver> Klasa która, będzie dziedziczyła po BroadcastReceiver musi implementować metodę abstrakcyjną onreceive(), w której przechwytujemy dostarczoną intencje. public class MySmsReceiver extends BroadcastReceiver { @Override public void onreceive(context ctx, Intent i) { if (i.getaction().equals("android.provider.telephony.sms_received")) { Toast.makeText(ctx, "Dostałem sms", Toast.LENGTH_SHORT).show();

Sam komponent BroadcastReceiver nie powinien wykonywać skomplikowanych operacji, jeżeli takie operacje są potrzebne powinien on uruchomić komponent Service, który służy do wykonywania tego typu zadań. Standardowe akcje systemu Android w klasie Intent: ACTION_TIME_TICK ACTION_TIME_CHANGED ACTION_TIMEZONE_CHANGED ACTION_BOOT_COMPLETED ACTION_PACKAGE_ADDED ACTION_PACKAGE_CHANGED ACTION_PACKAGE_REMOVED ACTION_PACKAGE_RESTARTED ACTION_PACKAGE_DATA_CLEARED ACTION_UID_REMOVED ACTION_BATTERY_CHANGED ACTION_POWER_CONNECTED ACTION_POWER_DISCONNECTED ACTION_SHUTDOWN http://developer.android.c om/reference/android/content/intent.html Akapit : Standard Broadcast Actions 2. Service Komponenty Service jak już wcześniej wspomniałem służą do wykonywania długotrwałych operacji w tle, same w sobie nie posiadają UI. Najczęściej są uruchamiane poprzez komponent BroadcastReceiver. Do uruchamiania służy metoda Context.startService(Intent). Należy również zaimplementować interfejs Runnable, aby operacje wykonywały się w osobnym wątku. Service dodajemy do projektu poprzez dopisanie w pliku AndroidManifest.xml elementu <service> oraz utworzenie nowej klasy, przykłady poniżej. AndroidManifest.xml:

<service android:name=".myuselessservice" /> Nasz Service: public class MyUselessService extends Service implements Runnable { @Override public void oncreate() { super.oncreate(); Thread athread = new Thread(this); athread.start(); public void run() { //jakies operacje stopself(); @Override public IBinder onbind(intent arg0) { return null; Service może pokazać powiadomienie, które pojawi się w pasku powiadomień systemu Android. Powiadomienie tworzy się za pomocą klasy NotificationCompat.Builder dla API < 11 (wymaga Android Support Library http://developer.android.com/training/basics/fragments/support-lib.html) oraz Notification.Builder dla wyższych wersji API. Przykład: int NOTIFICATION_ID = 123456; NotificationManager nm = (NotificationManager) getsystemservice(notification_service); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder // aktywność do uruchomienia po kliknięciu w powiadomienie.setcontentintent(pendingintent).setsmallicon(int) //np R.drawable.icon.setLargeIcon(BitmapFactory.decodeResource(this.getResources(),int)).setTicker(String).setWhen(System.currentTimeMillis()).setAutoCancel(true).setContentTitle(String).setContentText(String); Notification n = builder.build(); nm.notify(notification_id, n);

3. ContentProvider ContentProvider jest to komponent systemu Android, który pozwala na udostępnianie danych z naszej aplikacji do innych aplikacji. ContentProvider może również dostarczać dane do tej samej aplikacji w której został zaimplementowany. Może on dawać dostęp do dowolnego mechanizmu przechowywania danych, którego używa się w systemie Android (baza SQLite, XML etc.). Dane dostępne są poprzez omówione na poprzednich zajęciach URI, które są zdefiniowane w naszej klasie dziedziczącej po ContentProvider jako stałe. Przykłady: content://furniture/parts/ content://furniture/chairs/ content://furniture/chairs/1 Zwraca listę części z providera udostępniającego content://furniture Zwraca listę krzeseł z providera udostępniającego content://furniture Zwraca konkretne krzesło o ID 1 z providera udostępniającego content://furniture Więcej na temat tego komponentu dowiecie się podczas zajęć na temat składowania danych w Androidzie.

4. Zadanie 1. Stwórz własny BroadcastReceiver oraz Service. BroadcastReceiver powinien podczas przejścia w tryb samolotowy uruchomić stworzony Service. Service powinien pokazać powiadomienie, które po kliknięciu na nie przeniesie do nas do głównej aktywności. Ponadto Service po 2 sekundach działania za pomocą metody Log.d(String,String) wypisuję w logach dowolny tekst. Tip: Akcja : Intent.ACTION_AIRPLANE_MODE_CHANGED <action android:name="android.intent.action.airplane_mode" /> 5. Zadanie 2 (domowe). Przerobić aplikację z zadania pierwszego w taki sposób aby Service uruchamiał się co określony czas. Można wykorzystać do tego klasę AlarmManager.

Dziękuję za uwagę! Kontakt: sswierczek@wi.zut.edu.pl mad@zut.edu.pl