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