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



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

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Laboratorium 10 - Web Services

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

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

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

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

HttpRequest Aplikacja Czat

Bezpieczne uruchamianie apletów wg

Aplikacje WWW - laboratorium

Klasy i obiekty cz II

Zaawansowane aplikacje WWW - laboratorium

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

Programowanie w językach

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

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

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

using System;... using System.Threading;

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

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

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Lista dwukierunkowa - przykład implementacji destruktorów

Podstawy Windows Phone 7.5

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

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

Zasady programowania Dokumentacja

Tworzenie i wykorzystanie usług

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Programowanie obiektowe

akademia androida Składowanie danych część VI

Programowanie obiektowe i zdarzeniowe

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

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

Eura-Tech. Instrukcja Obsługi Aplikacji Mobilnej

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Metody Metody, parametry, zwracanie wartości

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Prosta aplikacja klient - serwer na bazie protokoªu UDP. Sprawozdanie.

Programowanie Obiektowe Ćwiczenie 4

Java Platform Micro Edition

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Leszek Stasiak Zastosowanie technologii LINQ w

Podstawy i języki programowania

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

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

STWORZENIE MOBILNEJ APLIKACJI,

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Aplikacje WWW - laboratorium

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Zaawansowane aplikacje internetowe

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Ćwiczenia 9 - Swing - część 1

Biblioteka standardowa - operacje wejścia/wyjścia

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7

Wykład 6 Dziedziczenie cd., pliki

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Przewodnik krok po kroku:

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

Aplikacje internetowe i rozproszone - laboratorium

Qt - dialogi. Bogdan Kreczmer. ZPCiR ICT PWR pokój 307 budynek C3

Multimedia JAVA. Historia

Instrukcja laboratoryjna cz.3

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wyjątki i obsługa błędów

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

Laboratorium programowania urządzeń mobilnych

Urzędowa Poczta Elektroniczna (UPE)

Przypominacz Instrukcja uŝytkownika

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Spis treści. S t r o n a 2

Archiwum DG 2016 PL-SOFT

ANDROID CMS dla urządzeń z systemem Android instrukcja użytkownika

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Infrastruktura aplikacji WWW

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Java. Programowanie Obiektowe Mateusz Cicheński

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Instrukcja obsługi notowań koszykowych w M@klerPlus

Transkrypt:

Programowanie telefonów z Windows Phone 7, cz. 4 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój 217A 1/39

Materiał na dziś 1. Zapis i odczyt plików Gdzie się podziały okna dialogowe Otwórz/Zapisz? Co to jest przestrzeń izolowana plików 2. Transfer plików w tle 3. Zarządzanie aplikacjami i ich stany 4. Agenci, przypomnienia i alarmy 2/39

Zapis i odczyt plików Gdzie się podziały okna dialogowe Otwórz/Zapisz? Aplikacja nie ma dostępu do ogólnego systemu plików. Musi się ona ograniczyć do korzystania z wydzielonej dla niej izolowanej przestrzeni plików (isolated storage). 3/39

4/39

Przestrzeń izolowana plików 5/39

Przestrzeń izolowana plików 6/39

using System.IO; using System.IO.IsolatedStorage;... // Zapis do pliku: private void button1_click(object sender, RoutedEventArgs e) IsolatedStorageFile plik = IsolatedStorageFile.GetUserStoreForApplication(); plik.createdirectory("mojkatalog"); using (var isofilestream = new IsolatedStorageFileStream( "MojKatalog/MojPlik.txt", FileMode.OpenOrCreate, plik)) using (var isofilewriter = new StreamWriter(isoFileStream)) isofilewriter.writeline(textbox1.text); The using keyword: directive - to create an alias for a namespace or to import types defined in namespaces statement - defines a scope at the end of which an object will be disposed. 7/39

// Odczyt z pliku: private void button2_click(object sender, RoutedEventArgs e) IsolatedStorageFile moj_plik = IsolatedStorageFile.GetUserStoreForApplication(); try using (var isofilestream = new IsolatedStorageFileStream( "MojKatalog/MojPlik.txt", FileMode.Open, moj_plik)) using (var isofilereader = new StreamReader(isoFileStream)) textblock1.text = isofilereader.readline(); catch textblock1.text = "Aaa... brak pliku.";... a w C można to zrobić za pomocą trzech funkcji: fopen(), fread(), fclose() 8/39

Transfer plików w tle Windows Phone od wersji 7.1 udostępnia mechanizm transferu plików w tle pomiędzy telefonem a serwerami internetowymi. Obsługa transferu za pomocą HTTP i HTTPS metodami GET lub POST, transfer FTP nie jest obsługiwany. Liczba równoczesnych transferów ograniczona do pięciu. Są też liczne ograniczenia co do transferów związane z rodzajem połączeń (WiFi, 3G, GPRS), wielkością plików oraz zasilaniem. 9/39

10/39

Transfer plików w tle 11/39

12/39

Transfer plików w tle using Microsoft.Phone.BackgroundTransfer; using System.IO; using System.IO.IsolatedStorage;... public MainPage() InitializeComponent(); using (IsolatedStorageFile isostore = IsolatedStorageFile.GetUserStoreForApplication()) if (!isostore.directoryexists("/shared/transfers")) isostore.createdirectory("/shared/transfers"); 13/39

Transfer plików w tle private void button1_click(object sender, RoutedEventArgs e) if (BackgroundTransferService.Requests.Count() >= 1) MessageBox.Show("Oj, za duzo pobran :-("); return; Uri transferuri = new Uri( Uri.EscapeUriString(textBox1.Text), UriKind.RelativeOrAbsolute); BackgroundTransferRequest transferrequest = new BackgroundTransferRequest(transferUri); transferrequest.method = "GET"; //opcjonalnie = "POST"; Uri downloaduri = new Uri("shared/transfers/plik.txt", UriKind.RelativeOrAbsolute); transferrequest.downloadlocation = downloaduri; transferrequest.transferpreferences = TransferPreferences.AllowCellular; transferrequest.transferpreferences = TransferPreferences.AllowBattery; transferrequest.transferpreferences = TransferPreferences.AllowCellularAndBattery; 14/39

try BackgroundTransferService.Add(transferRequest); catch (Exception) MessageBox.Show("Nie moge dodac... :-("); 15/39

Transfer plików w tle private void button2_click(object sender, RoutedEventArgs e) foreach (var transfer in BackgroundTransferService.Requests) BackgroundTransferRequest transfertoremove = BackgroundTransferService.Find(transfer.RequestId); try BackgroundTransferService.Remove(transferToRemove); catch (Exception) MessageBox.Show("Nie moge usunac... :-("); 16/39

Transfer plików w tle Zrobione: Pobieranie można rozpocząć i przerwać. Do zrobienia: Jakie jest zaawansowanie pobierania? Jak stwierdzić czy plik został pobrany? 17/39

Transfer plików w tle 18/39

Transfer plików w tle 19/39

Transfer plików w tle 20/39

Transfer plików w tle private void button1_click(object sender, RoutedEventArgs e)... foreach (var transfer in BackgroundTransferService.Requests) transfer.transferstatuschanged += new EventHandler<BackgroundTransferEventArgs>(ZmianaStatusu); transfer.transferprogresschanged += new EventHandler<BackgroundTransferEventArgs>(ZmianaZaawansowania); 21/39

Transfer plików w tle void ZmianaZaawansowania(object sender, BackgroundTransferEventArgs e) progressbar1.value = 100 * e.request.bytesreceived / e.request.totalbytestoreceive; 22/39

Transfer plików w tle void ZmianaStatusu(object sender, BackgroundTransferEventArgs e) switch (e.request.transferstatus) case TransferStatus.Completed: BackgroundTransferRequest transfertoremove = BackgroundTransferService.Find(e.Request.RequestId); try BackgroundTransferService.Remove(transferToRemove); catch (Exception) MessageBox.Show("Nie moge usunac zakonczonego transferu... :-("); 23/39

if (e.request.statuscode == 200 e.request.statuscode == 206) MessageBox.Show("Udalo sie... :-)"); // // // // // // Tutaj dopisać kod otwierania pliku i wyświetlania jego zawartości w polu tekstowym textbox2 else MessageBox.Show("Pobieranie nie udalo sie... :-("); break; case case case case TransferStatus.WaitingForExternalPower: TransferStatus.WaitingForExternalPowerDueToBatterySaverMode: TransferStatus.WaitingForNonVoiceBlockingNetwork: TransferStatus.WaitingForWiFi: break; 24/39

Transfer plików w tle 25/39

Transfer plików w tle 26/39

Transfer plików w tle 27/39

Zarządzanie aplikacjami i ich stany Uruchomionych (znajdujących się w pamięci) może być wiele procesów. Tylko jeden jest aktywny (foreground), pozostałe są w stanie uśpienia (dormant). Wyjątkiem są aplikacje (agents) działające w tle (background), które są okresowo pobudzane do działania. Jeśli brak jest zasobów to proces najdłużej uśpiony jest usuwany (tombstoned) Wykrywanie zmiany stanów programu umożliwia zapisanie wyglądu programu podczas jego zamykania i odtworzenie tego wyglądu po ponownym uruchomieniu. 28/39

29/39

Zarządzanie aplikacjami i ich stany 1. Utworzyć nowy projekt: Windows Phone Application (Silverlight) 2. Otworzyć plik App.xaml.cs i odnaleźć metody: private private private private void void void void Application_Launching(object sender, LaunchingEventArgs e) Application_Activated(object sender, ActivatedEventArgs e) Application_Deactivated(object sender, DeactivatedEventArgs e) Application_Closing(object sender, ClosingEventArgs e) 3. Zmodyfikować ciała metod zgodnie z przykładem: private void Application_Launching(object sender, LaunchingEventArgs e) MessageBox.Show("Zmiana stanu: Uruchomienie"); 4. Zaobserwować pojawianie się komunikatów podczas uruchamiania, deaktywacji, aktywacji i zamykania programu. 30/39

Zarządzanie aplikacjami i ich stany 31/39

Agenci, przypomnienia i alarmy 32/39

Agenci aplikacje działające w tle 33/39

34/39

Agenci, przypomnienia i alarmy 35/39

Agenci, przypomnienia i alarmy using Microsoft.Phone.Scheduler;... private void button1_click(object sender, RoutedEventArgs e) int sekundy; try sekundy = Convert.ToInt32(textBox1.Text); catch (Exception) sekundy = 60; Reminder reminder = new Reminder("przypom_123"); reminder.title = "Przypominacz"; reminder.content = "Idź na wykład"; reminder.begintime = DateTime.Now.AddSeconds(sekundy); reminder.expirationtime = reminder.begintime.addseconds(15); reminder.recurrencetype = RecurrenceInterval.None; //RecurrenceInterval.Daily, RecurrenceInterval.Weekly... reminder.navigationuri = new Uri("/Strona.xaml ", UriKind.RelativeOrAbsolute); if (ScheduledActionService.Find("przypom_123")!= null) ScheduledActionService.Remove("przypom_123"); ScheduledActionService.Add(reminder); 36/39

Agenci, przypomnienia i alarmy Odtwarzanie plików audio i wideo Znajdź informację o tym jak uruchomić program zewnętrzny do odtwarzania multimediów oraz jak uruchomić program do wyszukiwania plików z multimediami. 37/39

Więcej... 38/39

...i na tym koniec czwartej części wykładu 39/39