Politechnika Wrocławska  -  Wydział Informatyki i Telekomunikacji  - Kierunek: Informatyczne Systemy Automatyki,
Specjalność: Zastosowania Technologii Informacyjnych, studia I stopnia


"Programowanie systemów mobilnych"
 Kurs: W04ISA-SI0202G / LABORATORIUM  '2023/2024  sem LETNI

Terminy: Poniedziałki /N/P 13:15-15:00
Miejsce:
Lab. 2.3 / C16
Prowadzący:  
dr Marek Piasecki
Konsultacje:
USOS oraz Tablica ogłoszeń  ,  pok. P2.3/C16  lub 321/C3
ePortal:kurs Programowanie systemów mobilnych (Laboratorium)

Terminarz spotkań i oceny zadań:

Przykładowy archiwalny grafik obecności i ocen (z innej edycji kursu):

Przykładowe zadania laboratoryjne (obowiązujące zadania będą podawane na eportalu):



Laboratorium (A0)  -  Konfiguracja środowiska Android Studio
Zapoznanie się ze środowiskiem programistycznym:
  1. Przeglądnij materiały pomocnicze - rozdziały:
    1) Installing Android Studio
    2) An Android Studio Tutorial
    3) Creating an Android Virtual Device (AVD) in Android Studio
    4) Using and Configuring the Android Studio AVD Emulator
    5) A Tour of the Android Studio User Interface
    6) Testing Android Studio Apps on a Physical Android Device
    podręcznika "Android Studio Giraffe Essentials – Kotlin Edition"
    z portalu Techotopia.
     
  2. Zapoznaj się z podrozdziałem (1.x) "Installing Additional Android SDK Packages"
    a następnie użyj SDK Manager aby sprawdzić/zainstalować/odinstalować odpowiednie Android SDK ( tzn. oprogramowanie platform, przykłady, narzędzia, dokumentacje, itp) dla wybranej wersji systemu Android (API level)
  3. Zapoznaj się z rozdziałami nr pokazującymi jak za pomocą Virtual Device Manager mozna utworzyć nową instancję emulatoratora dla dowolnej wersji API.
    Na przykład, dla tego API Level które zostało pobrane/skonfigurowane w zadaniu (b)
  4. Przetestuj proces tworzenia / kompilacji / uruchamiania przykładowej aplikacji wykorzystującej "Empty View Activity".
    Do testów, wykorzystaj urządzenie wirtualne (emulator) utworzone w zadaniu (c).
  5. Użyj narzędzia View > Tool Windows: LogCat, Device File Explorer, Emulator do obserwacji stanu emulatora (lub rzeczywistego urządzenia) oraz testowanej aplikacji.

  • Instalacja Android Studio dla systemów operacyjnych Windows, MacOSX i Linux 
        

 
Laboratorium (A1)   -  Analiza cyklu życia Aktywności w aplikacji Android.
Pobierz z Internetu, rozpakuj, zaimportuj i przetestuj w środowisku Android Studio przykładową  aplikację LifeCycle demo z  archiwum kursu  V. Matosa,
a następnie spróbuj wykonać własną wersję takiej aplikacji, która będzie sygnalizować zmiany wewnętrznego stanu Aktywności, poprzez wyświetlanie powiadomień za pomocą obiektów klasy Toast:.
      Toast.makeText(this, "onCreate", 1).show();
zaimplementuj w ten sposób działanie metod obsługujących wybrane podstawowe wydarzenia:  onCreate, onStart, onResume, onSaveInstanceState, onPause, onStop, onDestroy, onRestart.

Podpowiedź:
To zadanie będzie łatwiejsze gdy wykorzystasz opcję menu
    Code > Override Methods…      (skrót Ctrl+O)
dostępną w środowisku Android Studio.

Zaobserwuj i zanotuj sekwencje komunikatów Toast wyświetlanych po::
  1. Kliknięciu programowego przycisku EXIT (w oknie aplikacji)
  2. Kliknięciu sprzętowego przycisku BACK (na telefonie)
  3. Kliknięciu sprzętowego przycisku HOME (na telefonie)
  4. Kliknięciu przycisku połączenia telefonicznego (CALL - zielona słuchawka)
    (uwaga: w starszych telefonach/emulatorach były dodatkowe przyciski Call / Hang-up)
  5. Przytrzymaniu przycisku odłożenia słuchawki (HANG-UP -  czerwona słuchawka)
  6. Otrzymaniu tekstowej wiadomości SMS (z innego emulatora lub telefonu)
  7. Po otrzymaniu połączenia głosowego (z innego emulatora lub telefonu).
Za każdym razem wróć do tego samego podstawowego stanu "running",
poprzez otwarcie okna z listą zainstalowanych aplikacji (launch pad),
i przywrócenie/uruchomienie aplikacji, klikając na jej ikonie.

Zaobserwowane sekwencje komunikatów opisz i skomentuj, w formie sprawozdania, w pliku o nazwie:  Laboratorium_1.txt  lub  Laboratorium_1.pdf

Materiały/slajdy pomocnicze:
       - Android Application's Life Cycle

   
 
Laboratorium (A2)   -   Implementacja aplikacji wykonującej proste obliczenia
  1. Wzorując się na wskazówkach:
    - z zestawu slajdów Android Devlopment Introduction  (ze stron nr: 32-39)
    - lub przykładowego kalkulatora napiwku omówionego w podrozdziale nr 2.3.2
       z książki "Unlocking Android",
    napisz własny program "Kalkulatora/Przelicznika kursu walut". Jako punkt startowy można wykorzystać domyślny szablon  Empty Activity

  2. Wykorzystaj widok Android Monitor (ikona narzędzi w lewym dolnym rogu),
    lub narzędzie / perspektywę DDMS (Tools > Android > Android Device Monitor),
    oraz wydruki kontrolne wykonywane w kodzie Java za pomocą  poleceń:
    Log.i( "TAG", "Tekst komunikatu");
    do śledzenia działania programu i sygnalizowania błędów.
Inne materiały pomocnicze:

 
Laboratorium (A3)  -  ANDROID -  Ćwiczenia z projektowaniem "responsive" UI
Oprogramuj jednoekranową aplikację (single Activity app) demonstrującą wykorzystanie komponentów dziedziczących po klasie View (Layouts, Widgets) do skonstruowania interfejsu użytkownika, który będzie się dynamicznie dopasowywał do: wielkości (small, normal, large, ... itd), rozdzielczości (ldpi, mdpi, ... itd) i orientacji (port, land, square) wyświetlacza:
  1. Program demostrujący różne możliwości zmian koloru/rozmiaru/typu czcionki tekstów wyświetlanych w etykietach lub oknach edycyjnych, jako rezultat klikania na różnych przyciskach lub wyboru różnych opcji menu.

  2. Aplikacja standardowego kalkulatora arytmetycznego, z zestawem klawiszy numerycznych oraz klawiszy podstawowych operacji arytmentycznych (+,-,*,/).
Materiały pomocnicze:

 
Laboratorium (A4)  -  ANDROID -  aplikacje złożone z wielu okien/aktywności
Oprogramuj złożoną wielo-okienkową aplikację, demonstrującą wykorzystanie obiektów klasy Intent oraz metody startActivity(...) do uruchamiania własnych oraz wbudowanych aktywności systemu Android (takich jak: Contacts, PhoneDialer, WebBrowser, GoogleMap). Klikanie przycisków umieszczonych w głównym oknie/aktywności tego programu powinno powodować:   
  1. Wyświetlenie listy kontaktów zapisanych w telefonie (a w wersji zaawansowanej: wybór jednego z kontaktów).
  2. Napisanie wiadomości SMS, której treść oraz odbiorca (numer telefonu) będą wprowadzane za pomocą dwóch pól EditText.
  3. Wyświetlenie mapy (GoogleMap) dla miejsca, którego współrzędne geograficzne tzn. długość i szerokość geograficzna będą wprowadzane w polach EditText.
Przykładowe instrukcje takich wywołań startActivity można znależć w prezentacji Android Intents na stronach nr: 10-26.
  1. Ostatni przycisk powinien uruchamiać nową dodatkową aktywność, w całości napisaną przez studenta, za pomocą metody startActivityForResult(...).
    Aktywność ta będzie otrzymywać parametry z okna głównego (a po zakończeniu działania zwracać wynik) w obiekcie klasy Bundle.
Wykorzystanie obiektów klasy Bundle do przekazywania argumentów jest omówione w wyżej wymienionej prezentacji na stronach nr 44-48, a przykładowa aplikacja realizująca funkcjonalność sumowania dwóch otrzymanych liczb (Example 17), jest zaprezentowana na stronach od 49 do 60.  

Inne materiały pomocnicze:
  - Android Developers > Common Intents (Alarm, Calendar, Camera, Contacts,  ... )

Tutorial na temat Intencji oraz Aktywności w systemie Android (aut. Lars Vogel):
  -  Android Intents - Tutorial
Rozdziały z podręcznika online "Android Studio Development Essentials (Techotopia)
  - 28 - An Overview of Android 6 Intents
  - 29 - Android 6 Explicit Intents
  - 30 - Android 6 Implicit Intents
Zmiany w systemie nadawania uprawnień (od API Level 23 - Android 6.0)
  - Requesting Permissions at Run Time


Android   Projekt własnej aplikacji Android

Laboratorium (Projekt-Android)
  • Temat projektu może być wybrany/zaproponowany przez studenta.
    Powinien być zgłoszony za pomocą wpisu na ePortalu w terminie do 14/22 XII 2021 oraz zaakceptowany przez prowadzącego.
          
  • Zakres projektu powinien uwzględnić przynajmniej jedno dodatkowe zagadnienie / aspekt z dziedziny technologii mobilnych, które nie było realizowane na wcześniejszych laboratoriach, które będzie przedmiotem samodzielnego studiowania, np:
    1. mobilna baza danych (SQLite)
    2. obsługa wbudowanych sensorów: akcelerometr, żyroskop, magnetometer, gps, czujnik światła, kamera, itp
    3. Internet - transmisja danych, synchronizacja, wykorzystanie web services,
    4. generowanie grafiki 3D oraz animacji na urządzeniach mobilnych
    5. komunikacja Bluetooth pomiędzy różnymi urządzeniami mobilnymi oraz wymiana danych z komputerami PC
    6. itp. . . .
  • Aplikacja powinna mieć interfejs użytkownika o nietrywialnej złożoności (3-4 widoki / aktywności lub fragmenty) dopasowujący się do konfiguracji i orientacji urządzenia.
       
  • Termin wykonania zadania projektowego (oraz zaprezentowania podczas zajęć lub podczas konsultacji) jest do  21 stycznia 2022.
    Do przysyłanego projektu należy dołączyć 3-5 stronicowe sprawozdanie opisujące: wybrany temat, co planowano zrobić, co wykonano, co się nie udało (i dlaczego), jakie materiały wykorzystano podczas samodzielnego studiowania wybranego "zagadnienia".





iOS   Programowanie aplikacji dla iOS 10 / 11, w języku Swift 4 / 5

Laboratorium (i1)  - Wprowadzenie iOS/Swift, środowisko Xcode, HelloWord
Zadanie domowe:
W ramach przygotowania do pierwszego laboratorium z tematu iOS, zapoznaj się z dwoma wprowadzającymi video-wykładami kursu  "Developing iOS 10 Apps with Swift"
dostępnymi na YouTube:
lub nowszej edycji tego samego kursu z roku 2018 Developing iOS 11 Apps with Swift  

Podczas laboratorium:
Praktyczne ćwiczenia z programowaniem aplikacji w środowisku Xcode
oraz zapoznanie się z podstawowymi elementami składowymi projektu dla systemu iOS
  1. Wykorzystaj wskazówki z rozdz.16 podręcznika iOS10/Swift z portalu Techotopia:
    Chapter 16. Creating an Interactive iOS 10 App
    do napisania własnej aplikacji "Konwerter Walut", o analogicznych funkcjonalnościach jak aplikacja konwertera walut dla systemu Android
    (napisana podczas laboratorium A2)

  2. W wersji zaawansowanej, zamiast prostego konwertera walut, można oprogramować kalkulator matematyczny o funkcjonalnościach podobnych do aplikacji kalkulatora dla systemu Android (z historią), wykonanej podczas laboratorium A3.

Materiały uzupełniające:
  - Dokumentacja on-line języka programowania Swift w wersji 5.x
  - Podręcznik programowania z portalu Techotopia - iOS 10 App Development Essentials


Położenie wybranych/użytecznych opcji oraz przycisków "narzędzi" w Xcode 12.x



Laboratorium (i2)  cykl życia ViewController-a, Storyboard i przejścia (Segues)
  1. Zapoznaj się z cyklem życia ViewController-a oraz jego istotną rolą w typowej dla iOS  architekturze Model-View-Controller. Materiały:
      - slajdy CS193p - Lecture 6 - View Controller Life cycle
      - oraz odpowiadające im video 
         (omówienie lifecycle rozpoczyna się od 40 minuty)

    Napisz prostą jednoekranową aplikację demonstrującą cykl życia ViewController-a która będzie miała zaimplementowane wszystkie podstawowe metody cyklu życia
    (tzn.. viewDidLoad, viewWill/DidAppear, viewWill/DidDisappear, viewWillTransitionToSize, ..., etc). Jako bazę, można wykorzystać interfejs aplikacji konwertera czy kalkulatora wykonanej podczas pierwszego laboratorium iOS (i1).

    Do debuggowania (wizualizacji) sekwencji kolejnych stanów cylku życia, wykorzystaj funkcję print(...) , które mają podobne znaczenie jak  Toast  lub   wydruki  Log.i( ) podczas wizualizacji cyklu życia aktywności w systemie Android. 

  2. Zapoznaj się z techniką wizualnego tworzenia przejść (Segue) pomiędzy różnymi ViewController-ami złożonej aplikacji iOS, zawierającej wiele widoków/ekranów:
    Techotopia - Chapter 24 - Using Storyboards and Segues in XCode 8

    Wzorując się na pomyśle aplikacji "Psychologist"
    (wykorzystywanej jako demo do archiwalnego wykładu na temat iOS z roku 2011 "Lecture 6: Multiple MVCs and Segues" , którego demonstracja jest pokazana  pokazana podczas ostatnich kilku minut tego video , zaczynając od momentu 1h 7min)

    napisz podobną aplikację "Doradca kierunku studiów", która będzie wspomagać studenta/kandydata w wyborze kierunku/specjalności na wydziale Elektroniki.
    Wykorzystaj pytania typu: Czy bardziej cię interesuje hardware czy software? Czy interesuje cię łączenie elektroniki i mechaniki? Jaki jest twój ulubiony język programowania: Java, C, Asembler? itp. 


Laboratorium (i3)  Komponent TableView(Controller), Architektura Master-Detail
  1. Zapoznaj się z materiałami prezentującymi zasady implementacji UITableView oraz TableViewController w architekturze aplikacji dla iOS:
      - z wprowadzającym tutorialem - Getting Started With UITableView in Swift 
      - slajdami  CS193p - Lecture 9 - Table View 
         lub video do tego wykładu (1h 30min)
    Bardziej zaawansowane tutoriale można znaleźć na witrynie Apple Developer:
      - Create Table Views (master TableView)
      - Implementing Navigation  (connect with detail Meal sub-View)
    lub Techotopia:
      26) An Overview of iOS 11 Table Views
      27) Using Xcode 9 Storyboards to Build Dynamic TableViews
      28) Implementing iOS 11 TableView Navigation

  2. Napisz przykładową aplikację implementującą szablon Master-Detail,
    która wykorzystuje główny TableViewController (master) do wyświetlania wielowierszowej listy przykładowych elementów (np. samochodów, zwierząt, ...)
    oraz szczegółowy (detail) ViewController do zaprezentowania szczegółowego opisu wybranego elementu w/w listy.

    Domyślnym tematem, może być aplikacja wyświetlająca ogólną listę wszystkich kierunków na wydziale Elektroniki oraz szczegółowe informacje o specjalnościach  na wybranym kierunku.

    W zależności od preferencji, można w tym celu wykorzystać listę Static_Cells  wyświetlających stałą listę listę elementów (predefiniowanych w Storyboard)
    lub dynamicznie tworzoną listę Dynamic_Prototypes  (której zawartość może być dynamicznie pobierana z lokalnej tablicy lub zewnętrznej bazy danych).

Inne materiały: