Programowanie dla Androida. Ubiquitous

Podobne dokumenty
Programowanie dla Androida

Programowanie dla Androida. Ubiquitous

KOTLIN. Język programowania dla Androida

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

Programowanie usług działających w tle

WSTĘP DO ANDROIDA. Laboratorium

WSTĘP DO ANDROIDA. Laboratorium 1 Systemy i aplikacje bez granic

akademia androida Pierwsze kroki w Androidzie część I

Systemy operacyjne na platformach mobilnych

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

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

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

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

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:

Rysowanie. Rysowanie - podstawy

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

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

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

Podstawowe kontrolki i ich obsługa

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

akademia androida Http i AsyncTask część VII

Podstawowe elementy GUI - zadania

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

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

Fragmenty są wspierane od Androida 1.6

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

WSTĘP DO ANDROIDA. Laboratorium 2 Systemy i aplikacje bez granic

Systemy operacyjne na platformach mobilnych

Programowanie dla Androida. Ubiquitous

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

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Android poradnik programisty

SOP System Obsługi Parkingów

Szkolenie Android dla początkujących

Tworzenie wydajnych interfejsów. Autorzy: Piotr Michałkiewicz, 2 rok AiR Daniel Maksymow, 2 rok Informatyki

Systemy operacyjne na platformach mobilnych

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

akademia androida Intencje oraz URI część III

Tworzenie aplikacji na platformie Android

Android, wprowadzenie do SDK

Layouty. Kilka layoutów

Mechanizmy pracy równoległej. Jarosław Kuchta

Architektura interfejsu użytkownika

Powiadomienia w systemie Android

Programowanie obiektowe

Systemy operacyjne na platformach mobilnych

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

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

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

Android tworzenie aplikacji mobilnych

Programowanie urządzeń mobilnych. projekt 6 ( )

Mobilne aplikacje multimedialne

Tworzenie i wykorzystanie usług

Warsztaty v2 Layout y i widget y. Tomasz Wachowski Kamil Snopek Jan Romaniak

Nowy interfejs w wersji 11.0 C8 BETA

Programowanie aplikacji mobilnych

Programowanie urządzeń mobilnych

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Agenda. Activity cd Layouty Jednostki Dialogi LogCat Drugie Activity i Intents Serializacja Własne widoki Menu

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

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

ABC 2002/XP PL EXCEL. Autor: Edward C. Willett, Steve Cummings. Rozdział 1. Podstawy pracy z programem (9) Uruchamianie programu (9)

Programowanie aplikacji mobilnych

Programowanie na poziomie sprzętu. Programowanie w Windows API

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie obiektowe

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

3S TeleCloud - Aplikacje Instrukcja użytkowania usługi 3S SMS SYSTEM

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

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

Laboratorium Systemów Mobilnych. Wykład 1

Zaawansowane aplikacje internetowe

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

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

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

GS2TelCOMM. Rozszerzenie do TelCOMM 2.0. Opracował: Michał Siatkowski Zatwierdził: IMIĘ I NAZWISKO

Oracle PL/SQL. Paweł Rajba.

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Dokumentacja Administratora portalu. aplikacji. Wirtualna szkoła

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

akademia androida Sensory część V Mobile Applications Developers

Zaawansowane aplikacje internetowe - laboratorium

Obsługa SMS i telefonii

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

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

Nieskonfigurowana, pusta konsola MMC

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

Multimedia JAVA. Historia

Delphi podstawy programowania. Środowisko Delphi

Platforma e-learningowa

Część I Rozpoczęcie pracy z usługami Reporting Services

Wstęp do programowania 2

Zaawansowane programowanie obiektowe - wykład 5

REFERAT O PRACY DYPLOMOWEJ

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Transkrypt:

Programowanie dla Androida Ubiquitous

Czas życia aktywności Obsługiwany przez metody: oncreate - wywoływana w momencie tworzenia aktywności - ma argument, w którym może otrzymać informacje o poprzednim stanie aktywności onrestart - gdy aktywność ma być wznowiona po wcześniejszym zatrzymaniu przez system onstart - uruchamiana zaraz po oncreate lub onrestart, gdy aktywność ma stać się widoczna

Czas życia aktywności onresume - aktywność jest aktualnie widoczna, a użytkownik może wchodzić z nią w interkację. onpause - gdy aktywność ma być wstrzymana. onstop - aktywność nie jest już widoczna dla użytkownika. ondestroy - aktywność zostanie zabita, z własnej inicjatywy lub przez system

Czas życia aktywności onconfigurationchanged - gdy zajdzie zmiana konfiguracji, która nie spowoduje restartu aktywności. onrestoreinstancestate - wywoływana po metodzie onstart gdy aktywność ma odtworzyć swój zachowany stan onsaveinstancestate - wywoływana przed zabiciem aktywności, gdy aktywność ma zachować swój stan dynamiczny

Czas życia aktywności Przeciążając te metody należy pamiętać, że oprócz dwóch ostatnich należy zawsze wywołać metodę odziedziczoną super.on. Standardowe kontrolki są w stanie same zachować swój stan pomiędzy zmianami stanu aktywności (można to wyłączyć - android:saveenabled= false ) Do przechowania stanu innych elementów można wykorzystać klasę Bundle

Projektowanie UI Urządzenia z Androidem mogą pracować w wielu różnych rozdzielczościach. Urządzenia mogą zmieniać orientację ekranu (pion/ poziom). Wszystkie widoczne elementy dziedziczą po klasie View. Czasami elementy są grupowane w obiekty dziedziczące po klasie ViewGroup.

Projektowanie UI W rozmieszczaniu widoków na ekranie pomagają obiekty typu LayoutManagers, będące specyficznym rodzajem ViewGroup: ContraintLayout - od Androida 7 podstawowy menedżer układu oparty na ograniczeniach LinearLayout - umieszcza elementy w wierszu lub kolumnie TableLayout - umieszcza elementy w macierzy wierszy/kolumn

FrameLayout - blokuje fragment ekranu na najczęściej jeden widok RelativeLayout - elementy rozmieszczane są względem siebie AbsoluteLayout - elementy mają podane bezwzględne współrzędne i rozmiary GridLayout - rozmieszcza elementy na kanwie o cechach macierzy. CoordinatorLayout - od Androida 5 do zarządzania paska na górze aplikacji

Domyślnie źródłowym menedżerem jest ConstraintLayout. Menedżery układu mogą się dowolnie zagnieżdżać, np. GridLayout wewnątrz TableLayout, wewnątrz ContraintLayout. Wszystkie elementy tworzą strukturę drzewa widoków.

Paleta komponentów Pasek narzędzi Atrybuty Drzewo komponentów Projektowany ekran Przełącznik trybu pracy

Design Blueprint

Widok tekstowy

Zdarzenia w Androidzie Użytkownik oraz system generują zdarzenia. Zdarzenia są kolejkowane na zasadzie FIFO. Ze zdarzeniem związane są informacje, które je opisują. Aby obsłużyć zdarzenie, obiekt (najczęściej widok) musi posiadał aktywne nasłuchiwanie (Listener) i odpowiednią do tego metodę.

Zdarzenia LISTENER METODA onclicklistener onclick() onlongclicklistener onlongclick() ontouchlistener ontouch() oncreatecontextmenulistener oncreatecontextmenu() onfocuschangelistener onfocuschange() onkeylistener onkey()

Wielodotyk Android potrafi obsłużyć na raz wiele punktów dotyku Dotyk może składać się w gest Aby przechwycić informacje o dotyku obsługujemy zdarzenie ontouch() Z dotykiem związany jest obiekt MotionEvent, który zawiera informacje o punktach dotyku aktywnych w danym momencie

Gesty Gesty (np. swipe, pinch) można rozpoznawać za pomocą klasy GestureDetectorCompat Informacje o geście musi otrzymywać klasa (niekoniecznie aktywności) posiadająca odpowiednie metody: onfling, ondown, onscroll, onshowpress, onsingletapup, onlongpress W zdarzeniu ontouch trzeba wywołać metodę klasy GestureDetectorCompat Bardziej złożone gesty można definiować samodzielnie

Fragmenty To w pełni niezależny fragment interfejsu użytkownika wraz z logiką, który można umieścić w aktywności Mogą zostać użyte tylko wewnątrz aktywności Na fragment składa się pliku XML opisujący wygląd i klasa opisująca zachowanie Dostępne od wersji 3 Android SDK

Intencje To mechanizm umożliwiający wywoływanie i komunikację pomiędzy aktywnościami Intencja umożliwia wywołanie innej aktywności aplikacji lub aktywności zarejestrowanej w systemie Umożliwiają też komunikację z usługami (Service) i odbiorcami komunikatów (Broadcast receivers)

Intencje explicite Intencje wprost odwołują się do konkretnej aktywności, podając jej dane (nazwę klasy) Najczęściej są używane do wywołania aktywności wewnątrz aplikacji Dane można przekazać przez obiekt klasy Intent, korzystając z metody putextra() Dane są przesyłane jako pary (klucz, wartość)

Intencje explicite Przydatny import Wywołanie intencji

Intencje Aby odczytać przekazane dane, klasa Activity ma własność intent, zwracającą wywołującą ją intencję W klasie Intent jest własność extras, zwracająca obiekt zawierające wszystkie przekazane dane Z niego, za pomocą metod get można odczytać dane

Intencje Aby aktywność można było wywołać, jej opis musi się znaleźć w pliku manifest

Intencje W powyższy sposób można przekazać dane tylko do aktywności wywoływanej Aby przesłać je też w drugą stronę, aktywność musi być wywołana jako pod-aktywność za pomocą metody startactivityforresult( ) Aktywność wywołana musi przeciążyć metodę finish() Aktywność wywołująca musi przeciążyć metodę onactivityresult()

Aktywność nadrzędna Intencje

Aktywność podrzędna Intencje

Intencje implicite Intentcje nie-wprost nie definiują precyzyjnie klasy ale akcję i dane dla niej Np. akcja ACTION_VIEW w połączeniu z adresem URL otworzy aktywność przeglądarki

Filtry intencji Za ich pomocą aktywność może zgłosić systemowi chęć obsługi wybranych akcji Konfiguruje się je w manifeście Aktywność musi też uzyskać odpowiednie uprawnienia dla akcji

Intencje nadawcze Aktywności mogą rozsyłać komunikaty do wszystkich zainstalowanych aplikacji Jeżeli aktywność chce otrzymywać komunikaty, musi się zarejestrować Do odbioru komunikatów musimy stworzyć klasę dziedziczącą po klasie BroadcastReceiver

Intencje nadawcze Są trzy rodzaje intencji nadawczych: zwykłe - po wysłaniu znikają stałe (sticky) - można je odczytać też później dwustronne (ordered) - umożliwiają przesłani danych do nadawcy komunikatu

Wątki Główny wątek aplikacji nie powinien wykonywać intensywnych obliczeniowo zadań Tylko główny wątek powinien wprost wchodzić w interakcję z interfejsem użytkownika Do tworzenie osobnego wątku można wykorzystać klasę AsyncTask Klasa AsyncTask jest klasą generyczną, zależną od 3 typów

Wątki Te 3 typy odpowiadają argumentom metod: doinbackground onprogressupdate onpostexecute Można użyć Void

Wątki Metoda onpreexecute() jest uruchamiana na początku w głównym wątku Główny kod nowego wątku powinien znajdować się w metodzie doinbackground() Metoda onprogressupdate() działa w głównym wątku i ma dostęp do UI Jest uruchamiana w momencie wywołania metody publishprogress() w asynchronicznym wątku Metoda onpostexecute() jest uruchamiana, gdy zakończy się działanie kodu z doinbackground() - działa w głównym wątku

Wątki W ten sposób może działać jeden wątek w tle Kolejne są kolejkowane i uruchamiane po zakończeniu aktywnego wątku Można uruchomić wątki równolegle wywołując metodę executeonexecutor() z klasy AsyncTask O tym, ile wątków może działać równolegle decyduje system w oparciu o liczbę rdzeni procesora

Usługi (Services) Długotrwałe operacje powinny być uruchamiane jako usługi Usługi uruchamiane są poprzez mechanizm intencji i są niezależne od uruchamiającej je aktywności Metody: startservice(), stopservice(), stopself()