WPAM. W5 Android bardzo krótkie wprowadzenie. Piotr Gawrysiak. pgawrysiak@supermedia.pl



Podobne dokumenty
WPAM. W5 Android bardzo krótkie wprowadzenie. Piotr Gawrysiak

Android - wprowadzenie. Łukasz Przywarty

SOP System Obsługi Parkingów

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

Google Android. Opracował Maciej Ciurlik

Programowanie dla Androida. Ubiquitous

Czym jest Android Architektura systemu Cechy platformy Android

Laboratorium Systemów Mobilnych. Wykład 1

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Systemy operacyjne dla telefonów komórkowych i urządzeń typu smartphone

Technologie internetowe w programowaniu.

Agenda. Wprowadzenie do Androida

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

Android, wprowadzenie do SDK

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

Wprowadzenie do systemu Android

Systemy operacyjne na platformach mobilnych

Kontakt. Krzysztof Bzowski Tel B5 / 605

Android tworzenie aplikacji mobilnych

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

Systemy operacyjne na platformach mobilnych

Tworzenie aplikacji na platformie Android

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

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Wprowadzenie do systemu Android

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Systemy operacyjne na platformach mobilnych

Programowanie aplikacji mobilnych

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

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

akademia androida Pierwsze kroki w Androidzie część I

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Programowanie aplikacji mobilnych

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

Mobilny system operacyjny Android

Tworzenie oprogramowania

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

OSGi Agata Hejmej

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

[Android] Podstawy programowania

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wstęp do Informatyki. Klasyfikacja oprogramowania

Programowanie aplikacji na urządzenia mobilne

Przetwarzanie danych w chmurze

NARZĘDZIA ANALITYCZNE W ZASTOSOWANIACH MOBILNYCH. Patryk Królikowski ISSA Polska

Środowiska i platformy programistyczne

Czym jest MIT App Inventor. App Inventor jest to zbiór bloków jako język programowania używany do tworzenia mobilnych aplikacji na androida.

OpenGL Embedded Systems

Mobilne aplikacje multimedialne

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Tworzenie cross-platformowych aplikacji w Xamarin.Forms

watermark TABLET LARK FreeMe GPS

dziennik Instrukcja obsługi

WPAM. W4 Apple iphone OS. Piotr Gawrysiak. -BY-SA Piotr Gawrysiak. Politechnika Warszawska Instytut Informatyki Zakład Systemów Informacyjnych

Programowanie w C. dr inż. Stanisław Wszelak

Mobilne systemy operacyjne. Adam Malizjusz, Piotr Galanek

Konspekt pracy inżynierskiej

Wprowadzenie do App Inventor

Szkolenie Android dla początkujących

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

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

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

WPAM. W4 Mobilny system operacyjny. Piotr Gawrysiak.

Instrukcja instalacji oprogramowania dla środowiska Windows

Język JAVA podstawy programowania

Programowanie procesora Microblaze w środowisku SDK

tel. (+48 81) /22 fax (+48 81) Cel przedmiotu

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

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Podstawy Techniki Komputerowej. Temat: System operacyjny komputera - charakterystyka

EMBEDDED LINUX ON ARM9 CORE EMBEDDED LINUX NA PROCESORACH Z RODZINY ARM9

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

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

KARTA KURSU. Projektowanie aplikacji mobilnych

watermark TABLET LARK FreeMe X M ANDROID 4.1 JELLYBEAN PROCESOR DUAL CORE 1.5 GHz 1GB MB RAM 8GB PAMIĘĆ WEW. EKRAN 10 CALI Z PODŚWIETLENIEM LED

Programowanie obiektowe

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

Spis treści. Wstęp... 10

9.0 M ANDROID JELLYBEAN PROCESOR DUAL CORE

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

OpenLaszlo. OpenLaszlo

WPAM. Wstęp do programowania aplikacji mobilnych. Piotr Gawrysiak.

MentorGraphics ModelSim

Wprowadzenie do narzędzia MAVEN

Windows Mobile. Andy Wigley, Daniel Moth, Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press 2007

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

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

Czym jest technologia Bluetooth?

ZAPOZNANIE SIĘ Z TWORZENIEM

Cloud Customers Relationships Wymagania wersja systemu:

Przetwarzanie danych w chmurze

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Nawigacja lokalizator gps kamera w lusterku wifi bluetooth Orllo LX-400GT

Kontakt. Krzysztof Bzowski Tel B5 / 605

Tablet GOCLEVER TAB T76 GPS TV

Transkrypt:

WPAM W5 Android bardzo krótkie wprowadzenie C-BY-SA Piotr Gawrysiak Piotr Gawrysiak pgawrysiak@supermedia.pl Politechnika Warszawska Instytut Informatyki Zakład Systemów Informacyjnych 2012

Dlaczego Android? A dokładniej po co firmie Google Android? Dwa powody: 1. Biznesowy 2. Oraz moralno-filozoficzny Google's mission is to organize the world's information and make it universally accessible and useful.

Dlaczego Android? Oczywiście jest także trzeci powód Ponieważ Silicon Valley to naprawdę małe

A poważniej Model biznesowy Google słabo się sprawdza w przypadku zamkniętych systemów stąd zaangażowanie w lobbying net neutrality stąd także dążenie do zapewnienia otwartości platform mobilnych główne źródło przychodów firmy targeted advertising

Open Handset Alliance Android nie jest wyłącznie produktem Google (przynajmniej w teorii )

ale

Czym Android nie jest Nie jest skończony Nie jest to Guglofon Nie jest to Linux Phone I nie ma nic wspólnego z

Android - geneza Podobnie jak większość interesujących produktów Google (poza Google Search) Android został stworzony przez firmę zewnętrzną 2005 Andy Rubin (twórca Danger Inc., doświadczenie z Magic Cap i WebTV) wraz z kolegami zakłada Android Inc. 2005 Google kupuje Android Inc., Rubin zostaje szefem działu rozwiązań mobilnych w Google 2007 powstaje Open Handset Alliance, preview SDK

Android - infrastruktura http://www.android.com strona oficjalna http://code.google.com/android - projekty Google dla Androida Platforma open source dla urządzeń mobilnych (niekoniecznie telefony komórkowe) wykorzystująca system operacyjny Linux jądro w wersji 2.6 (Froyo 2.6.32) A software stack including middleware and applications Wsparcie dla typowego sprzętu spotykanego w urządzeniach mobilnych touchscreen (multitouch) radio GSM, Bluetooth, Wifi akcelerometr, kompas, GPS kamera wideo, aparat fotograficzny Platforma otwarta, przy założeniu iż aplikacje tworzone są w języku Java Założenia projektowe

AndroidKomponenty - infrastruktura

Linux Kernel Pierwsze wersje oparte na 2.6.24, potem kolejne (n. Gingerbread na 2.6.33) Zapewnia dostęp do sprzętu ( sterowniki ) oraz podstawowe usługi systemu operacyjnego (zarządzanie procesami, pamięcią). Pierwsza warstwa abstrakcji sprzętu dla pozostałych elementów infrastruktury systemu. Niektóre standardowe elementy, których można by się spodziewać w systemie Linux zostały usunięte (w szczególności biblioteka Glibc, większość aplikacji userland) Niektóre elementy zostały dodane, w szczególności zarządzanie energią (aplikacje mają częściowy wpływ na zachowanie urządzenia WakeLocks) oraz komunikacja pomiędzy procesami (Binder)

Libraries / Runtime Każda aplikacja androidowa jest wykonywana przez osobną instancję (osobny proces) maszyny wirtualnej Dalvik, (co zapewnia m.in. sandboxing ) Dalvik maszyna wirtualna (de facto przerobiona maszyna Apache Harmony) przystosowana do pracy w środowisku o ograniczonych zasobach sprzętowych (powolny procesor, ograniczona ilość pamięci operacyjnej, brak pliku wymiany) Dalvik nie potrafi wykonywać bezpośrednio skompilowanych klas Java, potrzebna jest konwersja kodu osobnym narzędziem (dx) a następnie zapakowanie do archiwum APK Core Libraries = Java Core Libraries

Libraries / Runtime System zawiera zbiór wspomagających bibliotek (kod natywny, napisane w C / C++, wiele to biblioteki pochodzące z innych projektów open source) np. Baza danych (SQLite) Przeglądarka WWW (WebKit) Renderer czcionek (Freetype) Biblioteki grafiki 3D (OpenGL) oraz stworzonych przez Google np. Surface Manager (compositor obsługujący wyświetlanie aplikacji) Media Framework (odtwarzanie audio i wideo) HAL libraries (vibration, camera, GPS, )

Libraries / Runtime Surface manager Framebuffer (/dev/fb0) Surfaces (double buffering) Audio manager Audio flinger Diagramy by Esmertec

Application Framework Aplikacje wykorzystują przede wszystkim usługi dostępne w Application Framework np. Notification Manager wyświetlanie informacji statusowych dla użytkownika Resource Manager składnica komponentów aplikacji (tekst, grafika itp.) View System zbiór gotowych widgetów (elementy GUI) Ale są też kontrolowane przez jego elementy Activity Manager

Android bootup Kolejność uruchamiania komponentów Linux kernel Init Procesy systemowe (usb, adb, radio itp.) Pierwsza maszyna wirtualna Dalvik (Zygote) System Server (w oddzielnej maszynie Dalvik) Komponenty takie jak Activity Manager uruchamiane są przez System Server Surface Manager i Audio Manager od tego momentu coś może być wyświetlone i działa dźwięk Diagramy by Esmertec

Komponenty aplikacji Nie istnieją tu monolityczne aplikacje znane z klasycznych systemów operacyjnych. Aplikacje (tj. oprogramowanie z którym ma do czynienia użytkownik) składane jest z komponentów: Activity w uproszczeniu pojedynczy ekran aplikacji, to z czym w danym momencie ma do czynienia użytkownik ale może być to także okienko nałożone na inne Activity Activities grupowane są w stosy (task) kolejność w stosie ma znaczenie (system zapamiętuje kolejność wyświetlanych activities) Każda activity może być zastąpiona inną, która realizuje taką samą funkcjonalność

Tworzenie aplikacji Np. AIDE Android Java IDE Bezpośrednia kompilacja kodu źródłowego (do archiwum apk) na urządzeniu Integracja ze środowiskiem Eclipse (czyli możliwość przenoszenia projektów) Przeznaczony dla urządzeń typu tablet (choć da się uruchomić na telefonie ).

Interfejs użytkownika Dwie możliwości: Interfejs definiowany w postaci plików XML Nowsze wersje Android Developer Kit posiadają edytor wizualny Np.: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello, I am a Button" /> </LinearLayout> Ew. możliwe jest dodawanie kolejnych komponentów poprzez wywołanie odpowiednich metod addview()

Fragments <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.example.news.articlelistfragment" android:id="@+id/list" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.news.articlereaderfragm android:id="@+id/viewer" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> dostępne od wersji 3.0 androida (API level 11) możliwe wykorzystanie w starszych wersjach androida dzięki bibliotece Android Compatibility Library podobne do Activity, z tym że nie mogą istnieć samodzielnie (muszą być związane z activity ale mogą być używane w różnych)

Komponenty aplikacji Inne komponenty nie posiadają interfejsu użytkownika: Service komponent działający w tle który nie wyświetla interfejsu użytkownika (typowy przykład odtwarzacz muzyki, radio internetowe) Content Provider udostępnia innym aplikacjom dane pochodzące z naszej aplikacji Intent Receiver interfejs przyjmujący żądania wykonania pewnej czynności Aplikacja (tj. to użytkownik postrzega jako zbiór powiązanych ze sobą elementów interfejsu użytkownika) nie musi być wykonywana w

Cykl życia activity Usuwane są w pierwszej kolejności aplikacje mniej istotne dla użytkownika, np. service działający w tle jest ważniejszy niż activity znajdująca się na dole stosu (ponieważ użytkownik szybko do niej zapewne nie powróci) onpause(), onstop(), ondestroy() po ich zakończeniu activity może (nie musi) zostać usunięta z pamięci onpause() powinna

Intents Intent Receivers reagują na rozgłaszane wiadomości intents. Rozgłoszenie wiadomości może służyć celom informacyjnym, ale może być też prośbą o wykonanie pewnej akcji. Można traktować je jako komendy np. PLAY, EDIT, PICK itd. Aplikacje mogą tworzyć własne rodzaje intents, każda aplikacja definiuje (element konfiguracji) jakie intents jest w stanie obsłużyć System dobiera te, które najlepiej wypełniają zadanie To pozwala na dowolne wymienianie elementów infrastruktury

Tworzenie aplikacji / SDK Przede wszystkim mamy do dyspozycji darmowe SDK Emulator (oparty na Qemu bardzo powolny) Zestaw narzędzi (android debugging bridge, usb driver itd.) Plugin do Eclipse zawierający m.in. zestaw narzędzi automatujących tworzenie kodu źródłowego Tworzenie kodu w języku Java, jeśli niezbędna jest większa szybkość (lub niezbędny jest porting już istniejącej aplikacji) możemy skorzystać z pakietu NDK (Native Development Kit) pozwalającego na tworzenie bibliotek w C / C++ A co jeśli nie chcemy korzystać z Javy / C / C++? Możliwe jest wykorzystanie jednego z istniejących interpreterów, w tym w szczególności z SL4A (Scripting Layer for Android, dawniej Android Scripting Environment) http://code.google.com/p/android-scripting/ Obecnie wspierane Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl i BourneShell.

Tworzenie aplikacji / SDK A co jeśli nie lubimy pisać kodu źródłowego? Visual Basic for Android co prawda jeszcze nie istnieje, ale Google eksperymentowało z projektem App Inventor ( http://www.appinventor.mit.edu/ obecnie na drodze do OSS System programowania wizualnego oparty na koncepcjach opracowanych w MIT Lifelong Kindergarten (Scratch)

Urządzenia Bardzo duża różnorodność urządzeń, jednak pewne cechy pozostają wspólne: Ekran dotykowy multitouch capacitive Rozdzielczość przynamniej 320x480, potem 480x800 (ew. 845), obecnie 720p Procesor ARM, przynajmniej 256 MB RAM, przynajmniej 512 MB Flash WiFi, Bluetooth, GPS, GSM Podział według funkcji: Telefony (Samsung Galaxy S, Nexus One, S, HTC Legend itp., Nexus 4) Tablety / MID (Samsung Tab, CherryPad, Eken M005, Nexus 10) Czytniki książek (Barnes & Noble Nook, Nook Color, Kindle Fire) Urządzenia wbudowane Podział na oficjalne i nieoficjalne Oficjalne posiadają wbudowane aplikacje premium Google (np. Gmail, Google Maps) oraz dostęp do Google Android Market Nieoficjalne posiadają jedynie aplikacje open source i dodane przez producenta oraz ew. dostęp do własnego sklepu

Custom UI HTC Sense Stock Froyo Nook Color Kindle Fire Motorola

Fragmentation http://developer.android.com/resources /dashboard/platform-versions.html Activations

Fragmentation

Fragmentation

Wersje nieoficjalne Ponieważ kod źródłowy platformy (oraz większość sterowników) jest otwarty (za wyjątkiem Honeycomb), toteż w dość prosty (i legalny) sposób można tworzyć alternatywne wersje systemu (bazując na AOSP android open source project) Oczywiście niezbędny jest tu dostęp na poziomie root (odpowiednik jailbreak) w iphone Typowy przykład Cyanogen Mod (CM7, CM9), rozszerza możliwości standardowego systemu o m.in. Busybox Compressed cache Boot menu Ulepszony lock screen (m.in. kontrola odtwarzacza audio z poziomu lock screen) Nieco lepsza wydajność

Cdn.