Czas w WP7 (Silverlight) Wykład 7 Czas. Binding. Pliki. Launchers, choosers

Podobne dokumenty
Programowanie telefonów z Windows Phone 7, cz. 2

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie telefonów z Windows Phone 7, cz. 4

Sensory w WP7. Wykład 11 Sensory. GPS i mapa.

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Laboratorium programowania urządzeń mobilnych

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Klasy i obiekty cz II

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Bezpieczne uruchamianie apletów wg

Instrukcja laboratoryjna cz.3

Wykład 5 Okna MDI i SDI, dziedziczenie

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Podstawy i języki programowania

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Programowanie obiektowe i zdarzeniowe

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Programowanie urządzeń mobilnych

POLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.

using System;... using System.Threading;

Leszek Stasiak Zastosowanie technologii LINQ w

Metody dostępu do danych

Windows Phone 7. Tworzenie efektownych aplikacji

HttpRequest Aplikacja Czat

Programowanie obiektowe

PARADYGMATY PROGRAMOWANIA Wykład 4

Zaawansowane techniki programowania C#

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Laboratorium 10 - Web Services

Wykład 6 Dziedziczenie cd., pliki

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Multimedia JAVA. Historia

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Specyfikacja API Runtime BAS 3.0

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Instrukcja laboratoryjna nr.4

Wysyłka wniosko w ZUS - EKS. Instrukcja użytkownika aplikacji Wysyłka wniosków ZUS EKS

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Płace Optivum. Jakie czynności musi wykonać pracownik, aby otrzymywać drogą elektroniczną paski z list płac?

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Instrukcja użytkownika. Aplikacja dla WF-Mag

PARADYGMATY PROGRAMOWANIA Wykład 3

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Przed przystąpieniem do instalacji certyfikatów należy zweryfikować czy są spełnione poniższe wymagania systemowe.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Strumienie, pliki. Sortowanie. Wyjątki.

Kurs programowania 2 - listy

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

akademia androida Składowanie danych część VI

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Komunikator internetowy w C#

Wykład 8: klasy cz. 4

Zasady programowania Dokumentacja

ZASADY PROGRAMOWANIA KOMPUTERÓW

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania obiektowego

Programownie w technologii.net wykład 6 Element Binding i Data Binding

Ćwiczenie 1. Przygotowanie środowiska JAVA

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

STWORZENIE MOBILNEJ APLIKACJI,

Metody Metody, parametry, zwracanie wartości

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Aplikacje WWW - laboratorium

Instrukcja użytkownika

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Aplikacje RMI Lab4

Programowanie obiektowe

DYNAMICZNE PRZYDZIELANIE PAMIECI

Instrukcja użytkownika. Aplikacja dla Comarch ERP XL

Katalog książek cz. 2

Wykład 4: Klasy i Metody

Programowanie obiektowe

Struktury, unie, formatowanie, wskaźniki

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Definiowanie własnych klas

Język C++ wykład VIII

Obsługa bankowości mobilnej MobileBanking

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Aplikacje w środowisku Java

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

asix4 Podręcznik użytkownika CtTwinCAT - drajwer protokołu ADS systemu TwinCAT Podręcznik użytkownika

Aplikacje RMI

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy obiektowości

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

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

Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12

Transkrypt:

Kwalifikacje kadry dydaktycznej kluczem do rozwoju Uczelni PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ I EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO Uniwersytet Kazimierza Wielkiego w Bydgoszczy Wydział Matematyki, Fizyki i Techniki specjalność: Sieci i systemy rozproszone Technologie mobilne i rozproszone na platformie.net Wykład 7 Czas. Binding. Pliki. Launchers, choosers Czas w WP7 (Silverlight) DateTime struktura do odczytu czasu, TimeSpan struktura odstępu czasu Generowanie akcji czasowych using System.Windows.Threading; obiekt klasy DispatcherTimer, metoda Start/Stop rozpoczęcie/zakończenie właściwość Interval okres czasu w milisekundach, zdarzenie Tick generowane co Interval. 3 1

Czas - przykład //zmienna, czas aktualny (18.04.2012) DateTime wakacjeod, dt = DateTime.Now; int rok = dt.year; //2012 int miesiąc = dt.month; //4 int dzień = dt.day; //18 int godzina = dt.hour; wakacjeod = DateTime.Parse("2012-07-01"); //od 1 lipca TimeSpan dowakacji = wakacjeod - dt; double dni = dowakacji.totaldays; double godzin = dowakacji.totalhours //ile do wakacji //liczba dni //liczba godzin 4 Akcje czasowe using System.Windows.Threading; private System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer(); public MainPage() dt.interval = new TimeSpan(0, 0, 0, 0, 500); // 500 Milliseconds dt.tick += new EventHandler(dt_Tick); void dt_tick(object sender, EventArgs e) DateTime aktczas = DateTime.Now; 5 Data binding (binding) Łączy dwie właściwości dwóch obiektów zmiana jednej z nich powoduje odpowiednią modyfikację drugiej Przykład kontrolka Slider, kontrolka TextBlock zmiana wartości w kontrolce Slider efekt - zmiana wartość wyświetlanej w TextBlock kontrolka ListBox, kolumna tabeli (BD), podpięcie kolekcji do ListBox-a, itp 6 2

Użycie Składnia właściowśćobiektudocelowego = "Binding ElementName = nazwaobiektuźródłowego, Path = nazwawłaściowściobiektuźródłoweogo" Przykład <TextBlock Name="SliderValue" Text="Binding ElementName=Slider1, Path=Value" w wyrażeniu Binding wszystkie właściwości są definiowane bez cudzysłowów! 7 Przykład Klasycznie (bez DataBinding) kod xml: <Slider Name="sldSuwak" Minimum="-90" Maximum="90" ValueChanged="sldSuwak_ValueChanged"/> <TextBlock Name="txtKlasycznie" Text="0"/> i procedura zdarzeniowa private void sldsuwak_valuechanged(object sender, txtklasycznie.text = sldsuwak.value.tostring(); 8 Użycie DataBinding kod xml: <Slider Name="sldSuwak" Minimum="-90" Maximum="90"/> <TextBlock Name="txtBinding" Text="Binding ElementName=sldSuwak, Path=Value "/> i procedura zdarzeniowa niepotrzebna 9 3

Trwały zapis danych Isolated Storage przestrzeń do przechowywania danych używanych przez aplikacje operujemy za pomocą wirtualnego systemu plików Izolacja danych do danych aplikacji w Isolated Storage nie mają dostępu inne aplikacje, żadna aplikacja nie ma bezpośredniego dostępu do systemu plików w Windows Phone 7 Dlaczego tak? bezpieczeństwo systemu chroni przed nieautoryzowanym dostępem do danych. 10 IS w WP7 Różnice w stosunku do PC-Silverlight nie są obsługiwane strony, dane są przechowywane jedynie na poziomie aplikacji, deinstalacja programu usuwa dane! nie ma quoty na rozmiar na dysku desktop: 1MB z możliwością zwiększenia 8*1 9 GB WP7: maksymalnie rozmiar aplikacji 11 Co można zapisać lokalne ustawienia pliki foldery 12 4

Co potrzebne Przestrzeń nazw using System.IO.IsolatedStorage; using System.IO; Klasy do zarządzania plikami i folderami: IsolatedStorageFile reprezentuje przestrzeń Isolated Storage zawierającą pliki i foldery, IsolatedFileStream reprezentuje strumień zapewniający dostęp do pliku w Isolated Storage StreamWriter: obiekt umożliwiający zapis do plików Uwaga magazyn należy zamknąć po zakończeniu z korzystania! 13 Uwaga na using Otwarcie pliku do zapisu i zapisanie tekstu using (TextWriter tw = new StreamWriter("file.txt")) tw.write ("Zapisywany tekst do pliku "); // tutaj plik jest już zamknięty Instrukcja using (ogólnie w C#!) w tym kontekście nie dotyczy przestrzeni nazw określa obiekt/y używany wewnątrz bloku zasoby związane z tym blokiem zostaną zwolnione po wyjściu z bloku 14 Metody (wybrane) IsolatedStorageFile CreateDirectory(stringdir) CreateFile(stringpath) DeleteDirectory(string dir) DeleteFile(string path) bool DirectoryExists(stringpath) bool FileExists(stringpath) string[]getfilenames() tablica nazw plików katalogu głównego 15 5

Przykłady cz. I using (IsolatedStorageFile isostore = IsolatedStorageFile.GetUserStoreForApplication()) // kartoteka; w niej kolejna kartoteka isostore.createdirectory("topleveldirectory"); isostore.createdirectory("topleveldirectory/secondlevel"); // dwie nowe kartoteki, jedna w drugiej isostore.createdirectory("anothertopleveldirectory/insidedirectory"); // plik w kartotece głównej IsolatedStorageFileStream isostream1 = new IsolatedStorageFileStream ( "InTheRoot.txt", FileMode.Create, isostore); isostream1.close(); 16 Przykłady, cd using (IsolatedStorageFile isostore = IsolatedStorageFile.GetUserStoreForApplication()) // plik wewnątrz kartoteki InsideDirectory IsolatedStorageFileStream isostream2 = new IsolatedStorageFileStream( "AnotherTopLevelDirectory/InsideDirectory/HereIAm.txt", FileMode.Create, isostore); isostream2.close(); 17 Zapis prostych danych Zapis zawartości danetxt Do pliku file1 string danetxt = "Ala ma kota, a As to Ali pies"; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) using (IsolatedStorageFileStream isfstream = isf.createfile("file1")) StreamWriter writer = new StreamWriter(isfStream); writer.write(danetxt); writer.close(); 18 6

Odczyt danych z pliku Z pliku file1 do zmiennej danetxt!! uwaga na błędy I/O!! string danetxt = ""; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) using (IsolatedStorageFileStream readerstream = isf.openfile("file1", FileMode.Open)) StreamReader reader = new StreamReader(readerStream); danetxt = reader.readtoend(); reader.close(); 19 Zapis pary: klucz - wartość Ustawienia aplikacji kolor, czcionka, dane adresowe, itp Klasa IsolatedStorageSettings za pomocą słownika odwołujemy się do danych: w pliku _ApplicationSettings, dane w formacie xml: element (klucz): wartość elementu Przykład: string klucz, wart: string lub obiekt(!) //zapis IsolatedStorageSettings.ApplicationSettings[klucz] = wart; //odczyt wart = IsolatedStorageSettings.ApplicationSettings[klucz] as string; 20 Przykład //zapis for (int i = 1; i < 10; i++) string klucz = "klucz-" + i; string wart = "wartość: " + i * 10; IsolatedStorageSettings.ApplicationSettings[klucz] = wart; //odczyt string wart = ""; for (int i = 1; i < 10; i++) string klucz = "klucz-" + i; wart += IsolatedStorageSettings.ApplicationSettings[klucz] as string; 21 7

Inne operacje Deklaracja obiektu IsolatedStorageSettings IsolatedStorageSettings isostore= IsolatedStorageSettings.ApplicationSettings; Usunięcie klucza string klucz bool isostore.remove(klucz); Dodanie klucza i wartości isostore.add(klucz, wartość); Zapis isostore.save(); Odczyt (użyj bloku try-catch!) string wart = (string)isolatedstore[klucz]; 22 Launchers Funkcje udostępniane przez standardowe programy WP7 zainstalowane w środowisku WP. Można wołać z poziomu naszego programu można określić parametry wejściowe po zakończeniu program użytkownika jest wznawiany launcher nie zwraca wyników do naszego programu! Niezbędna przestrzeń nazw: Microsoft.Phone.Task 23 PhoneCallTask Wywołanie telefonu można określić numer decyzja o połączeniu - użytkownik PhoneCallTask tel = new PhoneCallTask(); tel.phonenumber = "123456"; tel.show(); 24 8

EmailComposeTask Program pocztowy zdefiniowanie własności wiadomości e- mail uruchomienie programu obsługi poczty, użytkownik może wysłać widomość, musi być zdefiniowane konto pocztowe! Nie działa na emulatorze EmailComposeTask list = new EmailComposeTask(); list.to = "adres@poczty.pl"; list.subject = "temat listu"; list.body = "treść listu"; list.show(); 25 SmsComposeTask Program do redagowania sms-a decyzja o wysłaniu użytkownik! SmsComposeTask mójsms = new SmsComposeTask(); mójsms.to = "1800-180-1800"; mójsms.body = "Cool Phone!!"; mójsms.show(); 26 Inne WebBrowserTask przeglądarka internetowa z załadowanym URI; SearchTask BingSearch z hasłem do wyszukania; MediaPlayerLauncher MediaPlayer z załadowanym plikiem do odtwarzania; MarketplaceDetailsTask wyświetlenie informacji o wybranym programie w Market Place; MarketplaceHubTask uruchomienie klienta programu Windows Phone Marketplace; MarketplaceSearchTask; MarketplaceReviewTask przeszukiwanie Marketplace; "review" dla określonego produktu; SaveEmailAddressTask zapisanie lub dodanie do istniejącego kontaktu adresu e-mail SavePhoneNumberTask zapisanie lub dodanie do istniejącego kontaktu numeru telefonu 27 9

Choosers Z poziomu programu użytkownika uruchomienie standardowych programów WP, z zadanymi parametrami wejściowymi, po zakończeniu chooser: zwraca do programu użytkownika wyniki swego działania np. zdjęcie wykonane aparatem telefonu zwracany jest uchwyt do zdarzenia informującego o zakończeniu działanie chooser a Zdefiniowane w przestrzeni nazw: Microsoft.Phone.Tasks 28 Dostępne choosers umożliwiają CameraCaptureTask zrobienie zdjęcia; EmailAddressChooserTask wybór z listy kontaktów adresu e-mail PhoneNumberChooserTask wybór z listy kontaktów numeru PhotoChooserTask PhotoPickerdo przeglądu i wyboru zdjęcia Contacts wyszukanie kontaktu na podstawie adresu e-mail czy numeru telefonu Appointments wyszukanie wydarzeń (spotkań) w kalendarzu 29 Przykład: CameraCaptureTask Wyświetlenie zrobionego zdjęcia 1. utworzyć prywatną zmienną CameraCaptureTaskpcht 2. w konstruktorze klasy danej strony zainicjować obiekt pcht, utworzyć uchwyt do zdarzenia pcht.completed 3. zaimplementować obsługę zdarzenia pcht_completed szkielet metody może być wygenerowany automatycznie w chwili deklarowania zdarzenia pcht_completed 2 x [TAB] wykorzystać właściwość TaskResult parametru e do przekazania nazwy pliku ze zrobionym zdjęciem do kontrolki typu Image obiekt BitmapImage w przestrzeni nazw System.Windows.Media.Imaging 4. Wywołać metodę Show obiektu pcht 30 10

Kod przykładu xaml: button + kontrolka Image <Button Name="btnZapis" Content="FOTO" Click="btnZapis_Click"/> <Image Name="obrazek" Height="526" Width="444"/> private CameraCaptureTask foto; public MainPage() InitializeComponent(); foto = new CameraCaptureTask(); foto.completed += new EventHandler<PhotoResult>(pcht_Completed); void pcht_completed(object sender, PhotoResult e) if (e.taskresult == TaskResult.OK) obrazek.source = new BitmapImage(new Uri(e.OriginalFileName)); private void btnzapis_click(object sender, RoutedEventArgs e) foto.show(); 31 Uruchomienie programu 32 11