Lab_2 - Politechnika Lubelska

Transkrypt

Lab_2 - Politechnika Lubelska
WASM
AppInventor – Lab 2
Komponenty połączeń telefonicznych i składowania danych
KOMPONENTY ODPOWIEDZIALNE ZA WYKONYWANIE POŁĄCZEŃ TELEFONICZNYCH
Sekcja „Social” palety komponentów zawiera komponenty, które mogą posłużyć do zbudowania
aplikacji wykonującej połączenia telefoniczne.
Komponent „PhoneCall” służy do inicjowania połączenia telefonicznego ze wskazanym
urządzeniem. Posiada m.in. następujące metody i atrybuty:
 call MakePhoneCall – zainicjowanie połączenia,
 PhoneNumber – numer telefonu,
 set PhoneNumber to – ustawienie numeru telefonu.
Komponent „PhoneNumberPicker” umożliwia wybór z listy kontaktów telefonu. Posiada m.in.
następujące metody i atrybuty:
 when AfterPicking do – kontener na akcje do wykonania po wybraniu kontaktu,
 when BeforePicking do – kontener na akcje do wykonania przed wybraniem kontaktu,
 Picture – obrazek kontaktu,
 ContactName – nazwa kontaktu,
 EmailAddress – adres e-mail kontaktu,
 PhoneNumber – numer telefonu kontaktu.
TRWAŁE PRZECHOWYWANIE DANYCH
Do trwałego przechowywania danych służy komponent „TinyDB” dostępny w sekcji „Basic”
Designera. Każda aplikacja może posiadać tylko jeden magazyn danych (bazę danych). Aplikacja może
posiadać wiele komponentów „TinyDB”, ale i tak odnoszą się do tego samego magazynu danych. Nie
można używać komponentu „TinyDB” do przekazywania danych pomiędzy dwoma różnymi aplikacjami w
telefonie.
Składowanie danych polega na zapisaniu pewnej informacji opatrzonej pewną etykietą przy
pomocy metody „StoreValue” (rys. 1). Etykieta musi być łańcuchem znaków, informacja może być
łańcuchem znaków lub listą.
Pobieranie informacji z magazynu danych polega na wywołaniu metody „GetValue” (rys. 1)
przyjmującej jako argument etykietę pod jaką zapisano informację. Jeśli pod wskazaną etykietą nie
zapisano informacji zostanie zwrócony pusty łańcuch znaków.
Magazyn danych można wyczyścić wybierając z menu telefonu „Settings -> Applications ->
Manage Applications -> Clear Data”.
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
1/6
WASM
AppInventor – Lab 2
Rys. 1. Dostępne metody komponentu „TinyDB”
Dodatkowo w sekcji „Not ready for prime time” Designera znajduje się komponent
„TinyWebDB”, który pozwala na składowanie danych na zdalnym hoście. Operacje na danych odbywają
się przy pomocy specjalnego serwisu. Domyślnie aplikacje łączą się z jego ograniczoną wersją (pozwala
na max 1000 wpisów) udostępnioną przez firmę Google. Projektant może uruchomić swój serwis np. na
domowym komputerze.
Użycie komponentu „TinyWebDB” pozwala na wymianę danych pomiędzy różnymi aplikacjami.
KOLEKCJE DANYCH
W celu utworzeniu listy (kolekcji danych), należy zdefiniować zmienną oraz dołączyć do niej
komponent tworzący listę (rys. 3). W zależności od sytuacji wartości listy można dostarczyć w momencie
jej tworzenia lub podczas pracy aplikacji np. poprzez użycie formularza lub odczytanie wartości z
magazynu danych.
Kolejność przetwarzania elementów nie musi być do końca ustalona, w związku z tym należy
odpowiednio wykorzystywać zdarzenie „Screen.Initialize”. Jest ono przetwarzane jako pierwsze, kolejne
są zdarzenia będące skutkiem operacji wykonywanych podczas inicjalizacji ekranu itd.
Rys. 3. Definicja kolekcji danych
Blocks Editor zawiera sekcję „Lists” udostępniającą szereg komponentów do pracy z kolekcjami
danych, a wśród nich m.in.: tworzący listę, sprawdzający czy lista jest pusta, dodający elementy do listy,
usuwający elementy z listy, zwracający długość listy itd.
Rysunek 4 przedstawia mechanizm tworzenia listy przy założeniu, że jej wartości są
wprowadzane przy pomocy formularza. Ostatnia z instrukcji czyści pole tekstowe poprzez przypisanie do
niego pustego łańcucha znaków.
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
2/6
WASM
AppInventor – Lab 2
Rys. 4. Dodawanie elementów do kolekcji danych
W ramach Blocks Editor można definiować procedury. Na rysunku 5 przedstawiono przykładową
procedurę wyświetlającą elementy kolekcji (listy). Wykorzystano etykietę oraz komponent „make text”,
który wewnątrz pętli „foreach” konkatenuje poszczególne pozycje listy w jeden łańcuch znaków
przypisany do etykiety. „\n” oznacza nową linię. Zdefiniowaną procedurę można wywołać np. w
odpowiedzi na wystąpienie jakiegoś zdarzenia.
Rys. 5. Przykładowa procedura wyświetlająca elementy kolekcji
WYWOŁYWANIE AKTYWNOŚCI
Aktywność można wywołać wykorzystując komponent ActivityStarter (paleta Other stuff).
W celu wywołania aktywności należy wskazać:
1. Akcję aktywności do uruchomienia (Action) – w przypadku wywoływania innej aplikacji wykonanej
w App Inventor można podać nazwę klasy aktywności.
2. Klasę aktywności do uruchomienia (ActivityClass).
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
3/6
WASM
AppInventor – Lab 2
3. Pakiet, w którym znajduje się klasa aktywności do uruchomienia (ActivityPackage).
Nazwę pakietu i klasy aktywności, w przypadku aplikacji utworzonej w App Inventor, można
uzyskać ściągając archiwum z projektem oraz otwierając plik z właściwościami projektu.
W celu przekazania wartości z jednej aplikacji wykonanej w App Inventor do drugiej aplikacji
wykonanej w App Inventor, należy ustawić: ExtraKey na APP_INVENTOR_START (koniecznie taki tekst),
ExtraValue na przekazywaną wartość (koniecznie tekstowa), uruchomić aktywność (rys. 6).
Rys. 6. Uruchomienie innej aplikacji wykonanej w App Inventor
Aby odebrać przekazaną wartość w drugiej aplikacji, należy użyć komponentu Get start text
z palety Control w Blocks Editor. Wywołaną aplikację można zamknąć komponentem call close
application z tej samej palety.
Przy pomocy komponentu ActivityStarter można również uruchomić: aplikację zarządzającą
kamerą, wyszukiwanie w Internecie, przeglądarkę internetową (włącznie ze wskazaniem, która strona ma
zostać otworzona) oraz aplikację mapową (włącznie ze wskazaniem określonej lokalizacji).
Aby poznać typowe ograniczenia App Inventora odwiedź stronę:
http://www.appinventor.org/capabilities-limitations
ĆWICZENIE 1. Aplikacja: Notatki
Zbuduj aplikację pozwalającą na zapisywanie krótkich notatek pod wybraną etykietą.
1. Zaprojektuj wygląd ekranu (lista notatek, pole etykiety, pole treści, przycisk zapisz)
2. Zbuduj obsługę zapisu notatki w TinyDB
3. Zbuduj procedurę odświeżenia listy notatek i zdefiniuj jej wywoływanie przy starcie aplikacji i po
zapisie.
4. Zbuduj obsługę załadowania notatki wybranej z listy
Przetestuj działanie aplikacji
Komentarz: W trybie debugowania TinyDB nie przechowuje informacji po zakończeniu/restarcie aplikacji.
Aby sprawdzić permanentność wpisywanych notatek należy wygenerować aplikację kliknąć w Designerze
w – Package for Phone -> Download to Connected Phone
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
4/6
WASM
AppInventor – Lab 2
ĆWICZENIE 2a. PRZYGOTOWANIE EMULATORA
W kontaktach umieść 4 wpisy ze zdjęciami – zdjęcia pobierz z galerii. Aby dodać zdjęcia do galerii, należy:
1. Utworzyć katalog na karcie pamięci:
adb shell mkdir /sdcard/pics
2. Wgrać do niego 4 zdjęcia przy pomocy polecenia:
adb push ścieżka_do_zdjęcia /sdcard/pics/
3. Odświeżyć zawartość galerii przechodząc w menu OS Android do „Dev Tools” i wybierając „Media
Scanner”.
Komentarz: polecenia adb wpisujemy w konsoli na KOMPUTERZE, jeżeli Windows nie potrafi odnaleźć
adb.exe należy odszukać katalog <sdk>/platform-tools/ - gdzie <sdk> oznacza ścieżkę do Android SDK.
ĆWICZENIE 2. ALIKACJA DZWONIĄCA POD WSKAZANY NUMER
1. Projekt interfejsu – przycisk wybierający numer kontaktu, komponent PhoneCall (paleta Social)
dzwoniący pod wskazany numer (w interfejsie ustawić numer na sztywno).
2. W Blocks Editor dać obsługę zdarzenia: jeśli kliknięto na przycisk „Dzwoń”, to wywołaj metodę
MakePhoneCall komponentu Phone Call.
3. Uruchomić aplikację i wywołać ustawiony numer.
4. Dodać do interfejsu aplikacji Phone Number Picker (paleta Social), który umożliwia przeglądanie
i wybór kontaktów zapisanych w telefonie oraz etykiety wyświetlające numer telefonu oraz dane
wybranego kontaktu.
5. W Blocks Editor Dodać obsługę zdarzenia AfterPicking dla dodanego komponentu – ustawia wybrany
nr telefonu jako tekst przycisku „Dzwoń” oraz zmienia numer wybierany przez komponent Phone
Call.
6. Uruchomić i przetestować aplikację.
7. Dodać ustawienie obrazka na przycisku „Dzwoń” na obrazek wybranego kontaktu.
8. Dodaj zapisywanie połączeń do bazy danych, np. zachowuj daty połączeń z wybranym numerem.
ĆWICZENIE 3. APLIKACJA WYSWIETLAJACA HISTORIĘ POŁĄCZEŃ DLA DANEGO NUMERU
1. Utworzyć projekt nowej aplikacji wyświetlającej łańcuch znaków będący datami wywołania numeru
telefonu kontaktu wybranego w ćwiczeniu 2.
2. Interfejs aplikacji powinien zawierać komponent służący do wyświetlenia historii oraz przycisk
zamykający aplikację.
3. Historia powinna zostać przekazana jako parametr wywołania aktywności.
ĆWICZENIE 4. WYWOŁYWANIE APLIKACJI Z POZIOMU APLIKACJI
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
5/6
WASM
AppInventor – Lab 2
1. Zainstaluj na emulatorze wywoływaną aplikację (np. Package for Phone– Download to Connected
Phone). W przeciwnym wypadku wywołanie się nie uda, ponieważ nie będzie istniała wywoływana
aktywność.
2. Do aplikacji z ćwiczenia 2 dodaj przycisk wyświetlający historię. W odpowiedzi na jego kliknięcie
wywołaj aplikację z ćwiczenia 3. W nazwie pakietu podaj ciąg znaków bez „.Screen1”.
© K. Żyła, J. Kęsik - Instytut Informatyki, WEiI, Politechnika Lubelska
6/6

Podobne dokumenty