Windows Phone ohjelmointi (Materiaali jatkuvassa kehityksessä)



Samankaltaiset tiedostot
Windows Phone 7 sovelluskehitys Jarno Montonen

Windows Phone ohjelmointi (Materiaali jatkuvassa kehityksessä)

PLA Mobiiliohjelmointi. Mika Saari

PLA Mobiiliohjelmointi. Mika Saari

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

2010-luvun kansalaistaito: Windows-puhelimen ohjelmointi. Kai Lindgren, Teollinen tuotanto/metropolia

Graafisen käyttöliittymän ohjelmointi

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Citizen s skill in 2010s: Programming the Windowsphone. Kai Lindgren, Industrial Production/Metropolia

C# Windows ohjelmointi perusopas

Asynkroninen ohjelmointi.net 4.5 versiolla

Web Services tietokantaohjelmoinnin perusteet

Windows Phone ohjelmointi perusteet

Microsoft Lync 2010 Attendee

TW-LTE 4G/3G. USB-modeemi (USB 2.0)

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

XNA grafiikka laajennus opas. Paavo Räisänen. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Windows 8. Ahti Haukilehto Microsoft Regional Director, Finland

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Javan asennus ja ohjeita ongelmatilanteisiin

Salasanan vaihto uuteen / How to change password

7.4 Variability management

10 Lock Lock-lause

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi.

C# ja.net. Juha Järvensivu 2007

Ajankohta Johdatus WP7-sovelluskehitykseen: WP7-sovelluskehityksen perusteet:

Choose Finland-Helsinki Valitse Finland-Helsinki

Googlen palvelut synkronoinnin apuna. Kampin palvelukeskus Jukka Hanhinen, Urho Karjalainen, Rene Tigerstedt, Pirjo Salo

TW- LTE 4G/3G. USB- sovitin (USB 2.0)

5 Näppäimistö. 5.1 Näppäimistön eventit

...ii...iii...x. 1 Silverlight NET Framework for Silverlight Silverlight Silverlight. 2-1 Visual Studio Silverlight...

812336A C++ -kielen perusteet,

Coolselector Asennusohje

Jypelin käyttöohjeet» Ruutukentän luominen

Näin saat 365 päivän ajalta Freshest Data sisältöä NavionicsWeb Store nettikaupasta

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Mikä yhteyssuhde on?

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

TW- WLAN ac SOVITTIMEN ASENNUSOHJE

Lab A1.FARM_Hyper-V.v3

Eclipse 3.1 Pikaopas versio 1.0

REST rajapintana mobiilikehityksessä

Jarno Nevala. Windows Phone 8 Sovelluskehityksen perusteet

GPRS-lisäpalvelu INTERNET-ASETUKSET

Calisto USB-kaiutinpuhelin. Käyttöopas

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

Windows Phone. Module Descriptions. Opiframe Oy puh Espoo

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Efficiency change over time

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Langaton koti Monitori

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

EASY Tiedostopalvelin - mobiilin käyttöopas

Mainosankkuri.fi-palvelun käyttöohjeita

Olio-ohjelmointi Javalla

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Listarakenne (ArrayList-luokka)

BaseMidlet. KÄYTTÖOHJE v. 1.00

OFFICE 365 OPISKELIJOILLE

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Pika-asennusohjeet Suomeksi

C470E9AC686C

NEUVOTTELUPALVELUT NETTINEUVOTTELU PIKAOPAS

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

POP-UP -IKKUNOIDEN SALLIMINEN

SENAATTILA uudistuu keväällä 2015

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Sisällysluettelo Table of contents

5. HelloWorld-ohjelma 5.1

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla

Rinnakkaisuus (.NET) Juha Järvensivu 2007

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Käytettävyys ja käyttäjätutkimus. Yhteisöt ja kommunikaatiosuunnittelu 2012 / Tero Köpsi

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

1. Omat operaatiot 1.1

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

9/11/2015 MOBILITY TOOL+ ERASMUS+ Learning Mobility of Individuals. M a n a g e m e n t. I s s u e. T o o l

Web järjestelmän ohjelmointi Kevät 2012 Hans Nieminen

Rekisteröiminen - FAQ

GOStats. Counter Strike: Global Offensive-pelin tulosapuri. Windows Phone sovelluskehitys-kurssin harjoitustyö dokumentaatio

Tietorakenteet ja algoritmit

Power BI Tech Conference Power BI. #TechConfFI. Johdanto

Pika-aloitusopas. Langaton IP-kamera. Tekninen tuki QG4_B

Pedacode Pikaopas. Web-sovelluksen luominen

MY KNX, KNX sivu sinua varten Mitä pitää muistaa: Pidä tietosi ajan tasalla

Transkriptio:

Windows Phone ohjelmointi (Materiaali jatkuvassa kehityksessä) Tavoitteita tälle luennolle Tutustutaan mobiililaitteen ominaisuuksiin. Tutustutaan Visual Studio -ympäristöön Tutustutaan Windows Phone projektiin Visual Studiossa Tehdään Hello world Testataan Helloworld emulaattorissa Laskukone luentoesimerkkinä Harjoitustehtävä 3: Tee Helloworld sovellus... Viimeinen kalvo: Lähteet

Developer status Microsoftilta Microsoftille vaaditaan developer -status, jotta asiat toimisivat (helpommin?) Dreamspark -tilin kautta saatavilla alennuskoodi www.tut.fi/pop - Opiskelu IT-palvelut ohjelmistot ja lisenssit josta löytyy ohjeet dreamsparkkiin. Dreamsparkissa app development - Windows Phone 8 Learn More - GET YOUR REGISTRATION CODE sivun alaosassa. Ja sitten rekisteröitymään Windows Phone Centeriin Azure pilvipalvelut on myös saatavilla käyttöön kuukauden testiajaksi, jonka jälkeen alkaa Pay As You Go -laskutuskausi. Opiskelija -statuksella testiaika saattaa olla pidempi... Azure :sta löytyy tälle kurssille mm. SQL-tietokanta, jos sellaista haluaa kokeilla

Mobiililaite Windows Phone Prosessori Vähintään 1 Ghz Lumia 800 : 1,4 Ghz Lumia 1520: Quad-core 2.2 GHz Käyttöjärjestelmä WP7, WP7.5, WP7.8, WP 8 tai WP 8.1 Lumia 1520: Windows Phone 8.12 with Lumia Denim Ei ole yhteensopiva aikaisempien Windows puhelimien kanssa, eikä pöytäkone windows 7:n kanssa. Windows 8 ja 8.1 yhteensopivuus... Optimoitu hitaammille prosessoreille, sekä akkukäyttöisille laitteille Kosketusnäyttö Lumia 800: 800x480, Lumia 1520:Full HD (1920 x 1080) Landscape tai portrait- näyttö (Vaaka- tai pystysuunnassa)

Mobiililaite Windows Phone Kosketusnäyttö Capacitive multi-touch (toinen tekniikka: resistiivinen kosketusnäyttö) Pystyy hallitsemaan useaa kosketusta yhtäaikaa (esim. piirto viidellä sormella) Lokaatio Lumia 1520: Magnetometer, A-GPS, Cellular and Wi-Fi network positioning, A-GLONASS Kiihtyvyysanturi x, y ja z suunnissa mahdollista. Kertoo puhelimen liikkeen tai asennon(esim. sovellus tekee ruudunkäännön) Kompassi (esim. kääntää kartan oikeaan suuntaan) Gyroskooppi (sovellus voi mitata puhelimen liikettä) Liike antureiden tiedon käsittelyyn järjestelmä tarjoaa mmotion -luokan

Mobiililaite Windows Phone Kamera 5Mpix tai parempi Lumia 800: 8Mpix Lumia 1520: 20Mpix Sovellukset voivat käyttää kameraa tai sen ottamia kuvia (Kuvien siirto Zune -ohjelmistolla) Nappulat: Start, Back, Lock, Search, Camera, Volume Toimivat puhelinversiosta riippumatta aina samanlaisesti Sovellukset voivat käyttää nappuloita, mutta niiden käyttöä on rajoitettu(esim back nappula keskeyttää sovelluksen toiminnan joten sen uudelleen ohjelmointi saattaisi aiheuttaa ongelmia) Virtuaalinäppäimistö sovellusten käytössä

Mobiililaite Windows Phone Keskusmuisti: Vähintään 512MB Lumia 800: 512MB Lumia 1520: 2GB Nopeampaa Sovellukset ajonaikana täällä Massamuisti vähintään 4GB Lumia 800: 16GB Lumia 1520:32 GB + MicroSD(max 64 GB) Ohjelmat, data ja mediatiedostot täällä Säilyttää tiedot kun puhelin sammutetaan Verkko-ominaisuudet(Lumia 1520) Wi-Fi: WLAN IEEE 802.11 a/b/g/n/ac LTE network bands3: 1, 3, 7, 8, 20 LTE max data speed DL: 150 Mbps LTE max data speed UL: 50 Mbps WCDMA network: 850 MHz, 900 MHz, 1900 MHz, 2100 MHz WCDMA max data speed DL: HSDPA - 42.2 Mbps WCDMA max data speed UL: HSUPA - 5.76 Mbps GSM network: 850 MHz, 900 MHz, 1800 MHz, 1900 MHz GSM max data speed DL: EGPRS 236.8 kbps GSM max data speed UL: EGPRS 236.8 kbps Tiedonsiirto puhelinverkon yli rajoitettu(yksittäisen latauksen koko) Bluetooth: Bluetooth 4.0

Windows Phone työkalut Mitä sovelluksia tarvitaan? Visual Studio 2013 tai Visual Studio express. https://dev.windowsphone.com/en-us/downloadsdk Mitä tarvitaan sovelluksen laitteessa testaukseen? Laite: Windows phone 8 Microsoft account (Aikaisemmin Windows Live ID) Kehittäjä tili: Dev Center developer accoun https://dev.windowsphone.com/en-us (WP 7.1 vaatii Zune ohjelmiston) Puhelin täytyy rekisteröidä sovelluskehitys -laitteeksi How to: Register Your Phone for Development

Windows Phone -ohjelmointi Tehdään Helloworld sovellus Tehdään laskukone, joka laskee kahden syöttökentän arvon yhteen. XAML-koodin muutokset C# muutokset Debug tietojen antaminen... Sovelluksen asennus laitteeseen... Seuraava aihe: Sovelluksen elinkaari ja Sovelluksella on useita eri tiloja...

Luentoharjoitus 1: koodataan laskukone Helloworld Tekstinsyöttö ja nappulat Helloworld tekstikentällä Laskukone, jossa yhteenlasku Tehdään laskukone, joka laskee kahden syöttökentän arvon yhteen. XAML-koodin muutokset C# muutokset Debug tietojen antaminen... Sovelluksen asennus laitteeseen... Optiot Miten vaihdetaan virtuaalinäppäimistö numeronappuloiksi? Programming windows Phone 7: chapter 7. Käyttöliittymän muokkaus suoraan XAMLkoodissa Toteuta nelilaskin Siirry harjoitustehtävään 3

Luokan 257 asetukset Windows phone kehitys vaatii Windows 8.1:n. Windows 8.1 virtuaalikone löytyy osoitteesta: c:/work Visual Studio 2013 prof löytyy virtuaalikoneesta. Developer tunnus: otula12@gmail.com TTYPoriUser -käyttäjä Windows 8.1 :ssä Salasanat saa kysymällä Mikalta...

WP luento 2: Tilan ja Tiedon tallennus Windows phone ohjelmointi ja tiedon tallennus: Sovelluksella erilaisia tiloja Tilasiirtymät vaikuttavat tietoihin Miten säilytetään sivun tiedot jos sivu suljetaan? Miten säilytetään sovelluksen tiedot jos sovellus suljetaan? Oheismateriaalia Esimerkit: luentoharjoitus2 ja luentoharjoitus3 MSDN -dokumentit App activation and deactivation for Windows Phone How to preserve and restore page state for Windows Phone

Moniajo Multitasking MSDN: Multitasking for Windows Phone Only one 3 rd party application can be executed simultaneously Eli moniajo on toteutettu näin. Uuden soveluksen käynnistäminen pysäyttää ajossa olevan sovelluksen (siirtyy dormant-tilaan) Pysäytetty sovellus voidaan poistaa muistista (siirtyy tombstoned -tilaan) - Dormant vs. Tombstoned -tila Dormant säilyttää sovelluksen tiedot Tombstoned hukkaa sovelluksen tiedot, jollei koodari ole niitä tallettanut. Emulaattorissa sovelluksen voi pakottaa Tombstoned tilaan: LaskinDemo01 >> properties >> Debug >> Tombstone upon deactivation while debugging.

Sovelluksen elinkaari The instance of application class receives the life cycle events: Launching Closing Activating Deactivating

Sovelluksen elinkaari MSDN: App activation and deactivation for Windows Phone

Debug viestejä tilasta tai tilanvaihdosta Tavoitteena saada seitsemän debug viestiä: 1. MainPage.xaml.cs: OnNavigatedFrom 2. MainPage.xaml.cs: OnNavigatedTo 3. App.xaml.cs: Launching 4. App.xaml.cs: Activated (4.1 dormant tai 4.2 tombstoned -tilasta) 5. App.xaml.cs: DeActivated 6. App.xaml.cs: Closing Luentoharjoituksessa 2 Lisätään jokaiseen kohtaan debug-viesti ja yritetään saada kaikki tulostumaan... Esimerkki koodia: luentoharjoitus02.zip

Debug viestit 1 ja 2 MainPage.xaml.cs tiedostoon protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) base.onnavigatedfrom(e); System.Diagnostics.Debug.WriteLine("Event 1: OnNavigatedFrom"); //tilan tallennus jos jotain back nappulaa painetaan protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) base.onnavigatedto(e); System.Diagnostics.Debug.WriteLine("Event 2: OnNavigatedTo"); //Tilan lataus, jos tietoa on tallennettu

Debug viesti Dormant tai Tombstoned Dormant vai Tombstoned -tila Dormant -tila: Sovelluksen tieto säilyy ilman koodausta. Tombstoned -tila: Sovelluksen tieto katoaa ilman koodausta. Debug viestit 4.1 ja 4.2 private void Application_Activated( object sender, ActivatedEventArgs e) if (e.isapplicationinstancepreserved) // Dormant - all data in place else // Tombstoned - all data gone: cold start

Luentoharjoitus 2. Luodaan projekti: Blank App (Windows Phone Silverlight) Tavoitteet: Edellä mainittuja tilasiirtymiä tapahtuu Dormant- ja tombstoned-tilat Tekstikentät säilyttävät arvonsa vaikka siirryttäisiin tombstoned -tilaan Seuraillaan vapaasti dokumenttia: How to preserve and restore page state for Windows Phone

Model View ViewModel (MVVM) Arkkitehtuurimalli windows phone sovelluksissa XAML -koodin ominaisuuksien huomiointi Data Bindings Data Templates Commands Event routing Lisää: Esitys vertaa MVC -mallia MVVM-malliin http://channel9.msdn.com/events/mix/mix10/ex14

Tiedon tallennus Yleisesti MSDN:ssä: Data for Windows Phone Page Dictionary Works between the events NavigatedTo/NavigatedFro m Activated/Deactivated Application Dictionary Isolated Storage IsolatedSettings Files Streams

Aikaa vievät toimenpiteet ja async Using asynchronous programming helps your app stay responsive when it does work that might take an extended amount of time. For example, an app that downloads content from the Internet might spend several seconds waiting for the content to arrive. If you use a synchronous method on the UI thread to retrieve the content, the app is blocked until the method returns. The app won't respond to user interaction, and because it seems non-responsive, the user might become frustrated. A much better way is to use asynchronous programming, where the app continues to run and respond to the UI while it waits for an operation to complete MSDN: Asynchronous programming (Windows Runtime apps) channel9.msdn.com: Part 28: Understanding Async and Awaitable Tasks Esimerkki: Async metodien käynnistäminen erilliseen säikeeseen

Luentoharjoitus 3 Tavoitteena luoda sovellus, joka tallettaa textboxin sisällön tiedostoon. Kun sovellus käynnistetään niin tiedosto ladataan automaattisesti textboxin sisällöksi. Async-metodin käyttö latauksessa Sisältönä pitäisi olla käyttäjän antama syöte Lisäominaisuuksia saa vapaasti toteuttaa harjoitustehtävään 5. Seuraillaan vapaasti MSDN -dokumentteja Quickstart: Working with files and folders in Windows Phone 8 How to preserve and restore app state for Windows Phone

Tiedon tallennus oliona Tarvitaan Luokka, josta voidaan luoda olioita... Tietorakenne, johon olioita talletetaan Olioden käyttö sovelluksen datakomponentteina. Listbox komponentin käyttö tietorakenteen datan esittämiseen. Luentoesimerkki

Luokka - olio namespace Luentoharjoitus4 public class MyItem private string myvar; public string FirstString get return myvar; set myvar = value;

Tietorakenne olioista - ObservableCollection using System.Collections.ObjectModel; namespace Luentoharjoitus4 public class MyList : ObservableCollection<MyItem> public MyList() Add(new MyItem FirstString = " Joo", SecondString = "Jee" );

ListBox -komponentti tietorakenteen esittämiseen Virhe: Tieto pitäisi olla FirstString

MainPage.xaml.cs Tiedon ja näkymän yhdistäminen Public partial class MainPage Private MyList lista; Public MainPage() lista=new MyList(); InitializeComponent(); ListaBox1.DataContext = lista;

Luentoharjoitus 4.1: listbox käyttö Toteutetaan edellisten kalvojen mukainen sovellus Tieto omana olionaan Kirja- luokka: nimi ja tekija Tiedoista kokoelma Kirjasto Kokoelma listbox -elementtiin Textblock-palikoina MSDN: How to: Display Data in a ListBox

Windows phone sovelluksessa navigointi Useiden näyttöjen käsittely ja viestinvälitys näyttöjen välillä selviää seuraavan tutoriaalin avulla. How to perform page navigation on Windows Phone 8 Yleistietoa sovelluksessa navigoinnista. MSDN: In-app navigation for Windows Phone Yleistietoa ruudun suunnasta(vaaka vai pysty) ja kosketusnäytön eri kosketusvaihtoehdoista. MSDN: Navigation, orientation, and gestures for Windows Phone Panorama näytön koostaminen How to create a panorama app for Windows Phone

Luentoharjoitus 4.2 : Panorama Toteutetaan panorama näyttö Kotikirjasto -sovellukseen. Ainakin kaksi panoramaitem-komponenttia LisaaKirja() -metodi kirjasto luokkaan.

LuentoHarjoituksia Olioden tiedontallennus Esitellään Kolme eri tapaa ( Muita?) Luentoharjoitus 4.3 Toinen tallentaa ja lataa olioiden tiedot tekstimuodossa. Välimerkkinä ; Luentoharjoitus 4.4 Ensimmäinen tallentaa ja lataa kokoelman olioita Käytetään hyväksi olioiden serialisaatioo (Oliokurssin asioita...) SerializeHelper luokka on geneerinen(ei välitä olioiden tyypeistä) Luentoharjoitus 4.5 Tallennetaan tiedot Azuren SQL-palvelimelle Tätä ei toteutettu, mutta ohjeet löytyy: Get started with Mobile Services http://www.windowsazure.com/en-us/documentation/articles/mobile-services-windows-phone-get-started/ Get started with data in Mobile Services http://www.windowsazure.com/en-us/documentation/articles/mobile-services-windows-phone-get-starteddata/

Tiedon tallennus txt-tiedostoon using System.Collections.ObjectModel; using System.IO.IsolatedStorage; using System.IO; namespace AkuAnkkaPanorama public class Luettelo : ObservableCollection<Taskukirja> IsolatedStorageFile tiedosto; public Luettelo() tiedosto = IsolatedStorageFile.GetUserStoreForApplication(); LataaTaskukirjat(); //Add(new Taskukirja TaskukirjanNro = " 104", TaskukirjanNimi = "Aku saa aikaan" ); public void talletataskukirjat(observablecollection<taskukirja> kirjat) IsolatedStorageFileStream kirjatiedosto; //onko olemassa if (!tiedosto.fileexists("akuankat.txt")) kirjatiedosto = tiedosto.openfile("akuankat.txt", FileMode.Create, FileAccess.Write); else kirjatiedosto = tiedosto.openfile("akuankat.txt", FileMode.Open, FileAccess.Write); using (StreamWriter writer = new StreamWriter(kirjatiedosto)) for (int i = 0; i < this.count; i++) writer.writeline(this[i].taskukirjannro + ";" + this[i].taskukirjannimi); writer.close();

Tiedon tallennus txt-tiedostoon public void LataaTaskukirjat() try IsolatedStorageFileStream kirjatiedosto = tiedosto.openfile("akuankat.txt", FileMode.OpenOrCreate, FileAccess.Read); string rivit; string[] nrojanimi = new string[2]; this.clear(); using (StreamReader reader = new StreamReader(kirjatiedosto)) while ((rivit = reader.readline())!= null) nrojanimi = rivit.split(';'); if (nrojanimi.length > 0) try Add(new Taskukirja TaskukirjanNro = nrojanimi[0], TaskukirjanNimi = nrojanimi[1] ); nrojanimi[0] + " "); else catch (IndexOutOfRangeException er) System.Diagnostics.Debug.WriteLine("Virhe: sisalto " + tiedosto.deletefile("akuankat.txt"); System.Diagnostics.Debug.WriteLine("nroJaNimi - Pituus heittää"); catch (IsolatedStorageException e) e.tostring();

Tiedon tallennusluokka Collection using System.IO.IsolatedStorage; using System.IO; using System.Runtime.Serialization; namespace harjoitus4_5_6_v2 public class SerializeHelper public static void SaveData<T>(string filename, T datatosave) using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) try if (store.fileexists(filename)) store.deletefile(filename); using (IsolatedStorageFileStream stream = store.openfile(filename, System.IO.FileMode.Create, System.IO.FileAccess.Write)) var serializer = new DataContractSerializer(typeof(T)); serializer.writeobject(stream, datatosave); catch (Exception e) //MessageBox.Show(e.Message); return;

Tiedon tallennusluokka Collection public static T ReadData<T>(string filename) using (IsolatedStorageFile store =IsolatedStorageFile.GetUserStoreForApplication()) if (store.fileexists(filename)) using (IsolatedStorageFileStream stream = store.openfile(filename, FileMode.OpenOrCreate, FileAccess.Read)) try var serializer = new DataContractSerializer(typeof(T)); return (T)serializer.ReadObject(stream); catch (Exception) return default(t); return default(t);

Tiedon tallennusluokka Collection SerializeHelper-luokan käyttö Tieto ObservableCollection -oliossa. public partial class PanoramaPage1 : PhoneApplicationPage private Paivakirja paivis; public PanoramaPage1() paivis = new Paivakirja(); InitializeComponent(); lataa(); listbox1.datacontext = paivis; public void tallenna() SerializeHelper.SaveData<Paivakirja>("AllEvents", paivis); public void lataa() paivis = (Paivakirja)SerializeHelper.ReadData<Paivakirja>("AllEvents"); Huomioi: nullreference if (paivis!= null)...else paivis = new Paivakirja();...

Expression Blend 4 -työkalu Mainoslauseita: Create rich web experiences, games, desktop apps, and more Design apps that use the full power of Silverlight Take your ideas from concept to finished project Work effectively with design tools, Expression Blend and Visual Studio Tutoriaaleja Getting started with Blend for Visual Studio 2013 Blend for Visual Studio 2012 Designing Windows Phone apps with Blend http://www.microsoft.com/design/toolbox/school/tutorials.aspx

Luentoharjoitus 5: Blend Testataan Blend työkalua johonkin olemassa olevaan windows phone sovellukseen. - Tavoitteena muuttaa TextBlock componentin ominaisuuksia. Apuna: Designing Windows Phone apps with Blend

WP luento3 Launchers and Choosers. Windows Phonessa on sisäänrakennuttu toiminnallisuus, jonka avulla voidaan yhdistää sovelluksia toimimaan yhdessä. Launchers ja choosers käynnistävät toisen sovelluksen(built-in application ) suorittamaan jonkin toiminnan. Eivät palauta mitään... Choosers yleensä palauttaa jotain tietoa kutsuja sovellukselle Lisätietoa: Launchers and Choosers for Windows Phone 8

WindowsPhone: Launchers MSDN:Launchers for Windows Phone 8 PhoneCallTask EmailComposeTask SmsComposeTask SearchTask WebBrowserTask MediaPlayerLauncher starts the Phone application with a particular phone number and display name selected. Note that the program cannot place the call, the user must initiate this our program can set properties on an email and then launch a task to allow the user to send the message. starts the Messaging application and display a new SMS message. Note that the message is not sent automatically. starts the Search application using a query you provide starts the Web browser and displays the URL you provide. starts the Media Player application and play a given media file

WindowsPhone: Launcher How to use the email compose task for Windows Phone 8 Launchers do not return data or status to your application. 1. Create instance of the phone task type for the launcher 2. Set any required and optional properties of the task object. These determine the behavior of the task application when it invoked 3. Call the show method of the task object private void button1_click(object sender, RoutedEventArgs e) sendmail(textbox1.text, textbox2.text); private void sendmail(string subject, string body) EmailComposeTask email = new EmailComposeTask(); email.body = body; email.subject = subject; email.show();

Luentoharjoitus 7 email lähetys sovelluksesta Tehdään sovellus josta voi lähettää sähköpostia Emulaattorin tiliasetukset estää testauksen... luentoharjoitus07.zip

Ratkaisu edelliseen using Microsoft.Phone.Tasks; namespace luentoharjoitus6 public partial class MainPage : PhoneApplicationPage // Constructor public MainPage() InitializeComponent(); private void button1_click(object sender, RoutedEventArgs e) sendmail(textbox1.text, textbox2.text); private void sendmail(string subject, string body) EmailComposeTask email = new EmailComposeTask(); email.body = body; email.subject = subject; email.show();

Windows Phone Choosers Choosers can return data and status to your application. However, if the user presses Start while the new application is open, the calling application may never be reactivated. The following are the general steps for using a Chooser: 1. Create an instance of the task type for the Launcher. 2. Identify the callback method to run after the user completes the task. 3. Set any required and optional properties of the task object. 4. Call the Show method of the task object. 5. Implement the completed event handler to capture data and status after the user completes the task....

Windows Phone Choosers CameraCaptureTask EmailAddressChooserTask PhoneNumberChooserTask PhotoChooserTask SaveEmailAddressTask SavePhoneNumberTask AddressChooserTask GameInviteTask SaveContactTask SaveRingtoneTask starts the Camera application for the user to take a photo starts the Contacts application and allows the user to select a contact's email address starts the Contacts application and allows the user to select a contact's phone number. starts the Photo Picker application for the user to choose a photo. saves the provided email address to the Contacts list Returns whether or not the save was completed. saves the provided phone number to the Contacts list. Returns whether or not the save was completed your program can request that the user select an address from the contact the phone your program can invite another phone user to a multiplayer gaming session your program can populate a contacts entry and allow the user to save this to a contact list on the phone. Returns whether or not the save was completed. your program can give the user the option to save an audio file in an appropriate format as a ringtone for the phone

Luentoharjoitus 8 PhotoChooserTask testi Luodaan sovellus, jossa käyttäjä voi valita kuvan puhelimen muistista. Image -komponentti Button -komponentti How to use the photo chooser task for Windows Phone 8

Ratkaisu edelliseen using Microsoft.Phone.Tasks; namespace Luentoharjoitus08Testi public partial class MainPage : PhoneApplicationPage PhotoChooserTask photochoosertask; public MainPage() InitializeComponent(); photochoosertask = new PhotoChooserTask(); photochoosertask.completed += new EventHandler<PhotoResult>(photoChooserTask_Completed); void photochoosertask_completed(object sender, PhotoResult e) if (e.taskresult == TaskResult.OK) MessageBox.Show(e.ChosenPhoto.Length.ToString()); System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage(); bmp.setsource(e.chosenphoto); myimage.source = bmp; private void Button_Click(object sender, RoutedEventArgs e) photochoosertask.show();

Camera Kameran käyttötapauksia: CameraCaptureTask PhotoChooserTask Embedding camera Kokeillaan viimeistä eli sisällytetään kamera toiminto omaan sovellukseen Etsin ruutu, nappula ja kuva ruutu näyttöön. Microsoft.Devices.PhotoCamera Kuvanotto -logiikka Event handlerit Oheisluettavaa How to create a base camera app for Windows Phone

Luentoharjoitus 9 Tavoitteena oma kamera sovellus. 1. Lisää canvas MainPage:en 2. Lisää videobrush canvasiin <Canvas.Background> <VideoBrush x:name="thebrush"></videobrush> </Canvas.Background> 3. Lisää Button ja Image -komponentit MainPage:en 4. Toteutetaan kuvanotto käyttäen Dispatcher-luokkaa 5. Toteutetaan OnNavigatedTo- ja OnNavigatedFrom -metodit. (käynnistää ja sammuttaa kameran) 6. Nappulasta kuvan otto. 7.Oikeuksien tarkistus: ID_CAP_ISV_CAMERA

using Microsoft.Devices; using System.Windows.Media.Imaging; namespace Luentoharjoitus8Camera public partial class MainPage : PhoneApplicationPage PhotoCamera camera = null; // Constructor public MainPage() InitializeComponent(); private void button1_click(object sender, RoutedEventArgs e) camera.captureimage(); protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) base.onnavigatedto(e); camera = new PhotoCamera(); thebrush.setsource(camera); camera.captureimageavailable += new EventHandler<ContentReadyEventArgs>(camera_CaptureImageAvailable); void camera_captureimageavailable(object sender, ContentReadyEventArgs e) Dispatcher.BeginInvoke(delegate() BitmapImage bitmap = new BitmapImage(); bitmap.setsource(e.imagestream); image1.source = bitmap; ); protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) base.onnavigatedfrom(e); if (null!= camera) camera.captureimageavailable -= camera_captureimageavailable; camera.dispose(); camera = null;

Kuvan käsittely http://www.developer.nokia.com/resources/library/imaging_api_ref/index.html Puhelimessa voidaan käsitellä kuvaa Nokia Imaging SDK tarjoaa valmiita filttereitä.

Luentoharjoitus 10: Kuvan käsittely Kuvan filtteröinti puhelimessa... Yleistietoa: http://www.developer.nokia.com/resources/library/imaging_api_ref/index.html Quick start: http://developer.nokia.com/resources/library/lumia/nokia-imaging-sdk/quick-start.html Imaging SDK:n asennus: http://developer.nokia.com/resources/library/lumia/nokia-imaging-sdk/adding-libraries-to-the-project.html Testifiltteri.zip...

Luentoharjoitus: Kuvan käsittely Näytön määrittely: <Grid x:name="contentpanel" Grid.Row="1" Margin="12,0,12,0"> <Image x:name="sourcekuva" HorizontalAlignment="Center" Height="136" Margin="10,10,10,0" VerticalAlignment="Top" Width="436" /> <Image x:name="targetkuva" HorizontalAlignment="Center" Height="369" Margin="10,228,10,0" VerticalAlignment="Top" Width="436" /> <Button x:name="valintabutton" Content="Valitse kuva" HorizontalAlignment="Left" Margin="10,151,0,0" VerticalAlignment="top" Width="436" Click="btnChoose_click"/> </Grid> Tarpeelliset kirjastot using System.Windows.Media.Imaging; using Microsoft.Phone.Tasks; using Nokia.Graphics.Imaging;.

Luentoharjoitus: Kuvan käsittely Luokan muuttujat: PhotoChooserTask photochoosertask = new PhotoChooserTask(); WriteableBitmap writeablebitmapsource=null; WriteableBitmap writeablebitmaptarget=null; StreamImageSource streamimagesource = null; WriteableBitmapRenderer writeablebitmaprenderer = null; FilterEffect filtereffect = null; IList<IFilter> filterlist = new List<IFilter>(); Luokan konstruktori. InitializeComponent(); photochoosertask.completed += photochoosertask_completed; filterlist.add(new OilyFilter()); writeablebitmapsource = new WriteableBitmap(sourceKuva,null); writeablebitmaptarget =new WriteableBitmap(targetKuva,null);

Luentoharjoitus: Kuvan käsittely Kuvan valinta taskin suoritus void photochoosertask_completed(object sender, PhotoResult e) if (e.taskresult == TaskResult.OK) writeablebitmapsource.setsource(e.chosenphoto); sourcekuva.source = writeablebitmapsource; e.chosenphoto.position = 0; streamimagesource = new StreamImageSource(e.ChosenPhoto); if (writeablebitmaprenderer!= null) writeablebitmaprenderer.dispose(); writeablebitmaprenderer = null; if (filtereffect!= null) filtereffect.dispose(); filtereffect = null; renderoutputbitmap();

Luentoharjoitus: Kuvan käsittely Kuvan käsittely filtterillä private async void renderoutputbitmap() if(streamimagesource!=null) if(filtereffect==null) filtereffect = new FilterEffect(streamImageSource); filtereffect.filters = filterlist; if(writeablebitmaprenderer==null) writeablebitmaprenderer = new WriteableBitmapRenderer(filterEffect, writeablebitmaptarget, OutputOption.PreserveAspectRatio); writeablebitmaptarget = await writeablebitmaprenderer.renderasync(); targetkuva.source = writeablebitmaptarget; private void btnchoose_click(object sender, RoutedEventArgs e) photochoosertask.show();

Sensors Accelerometer, Compass, Gyroscope Microsoft.devices.Sensors.Motion -Class Start, stop Property currentvalue Event CurrentValueChanged Using Microsoft.Devices.Sensors; Using Microsoft.Xna.Framework; Esimerkki: PhoneApp8Accev02 Oheismateriaali How to:gets data from accelerometer for windows phone

Luentoharjoitus 11 - kiihtyvyysanturi Lisää referenssit Tee slideri (slider1) Lisää kirjasto Mainpage.xaml.cs -koodia Testaus Luentoharjoitus9Acce.zip

Background tasks Windows phone:ssa ei voi ajaa rinnakkain useampaa sovellusta, Mutta joskus on tarpeen saada sovellus pyörimään taustalla Windows Phone käyttöjärjestelmä tarjoaa background processing -palveluita, joihin koodari voi sijoittaa koodia suorituksee, kun varsinainen sovellus ei ole aktiivinen Ei käyttöliittymää Tiukat rajoitukset, että mitä voi tehdä ja mitä ei voi tehdä. Background Agents Overview for Windows Phone http://msdn.microsoft.com/en-us/library/hh202942%28v=vs.92%29.aspx Käyttöjärjestelmä sammuttaa background task:n jos muisti, akku tai verkkoyhteys niin vaatii Myös käyttäjä voi sammuttaa background task:n Oheismateriaali: How to implement background Agents for Windows Phone

Luentoharjoitus 12 Background agentin käyttö johonkin... Testaillaan valmista koodia...

Tiles for Windows Phone - Tiilet Sovelluksen käynnistämiseen tarkoitettu kuvake aloitusruudussa Käytettävissä WP 7, WP 7.1 ja Päivitettynä WP 8, sekä Windows 8 Yksi sovellus voi hallinnoida yhtä tai useampaa tiiltä Useita kokoja: small, medium, and wide Loppukäyttäjä voi määrätä koon, sisältö muuttuu koon mukaan.

Luentoharjoitus 13 Luodaan sovellus jossa muutetaan tiilen sisältöä sovelluksesta. Numeroarvo tiileen Teksti tiileen Taustakuva tiileen??? Testaus: Tiili aloitus näyttöön(pin to start) Oheismateriaalina: How to create, delete, and update Tiles for Windows Phone OS 7.1

Vastaus- phoneapp1tiletesti using Microsoft.Phone.Shell; namespace PhoneApp1Tiletesti public partial class MainPage : PhoneApplicationPage // Constructor public MainPage() InitializeComponent(); private static int counter = 1; private void button1_click(object sender, RoutedEventArgs e) ++counter; ShellTile tile = ShellTile.ActiveTiles.First(); if(null!= tile) StandardTileData data = new StandardTileData(); data.title = "Juuh"; data.count = counter; tile.update(data); MessageBox.Show("updated, c = " + counter);

Maps and navigation GeoCoordinate, Zoom level 1-20 Map API muuttui windows Phone 8:iin. Capability ID_CAP_MAP app manifestiin mukaan Maps and navigation for Windows phone 8 Bing Kartat käytettävissä Windows phone 7.1:ssä Testataan luentoharjoitus 12:ssa

Luentoharjoitus 14 Maps and navigation for windows Phone Tehdään sovellus, jossa karttaruutu ja nappula. Nappula keskittää kartan poriin. Oheismateriaalina: Exercise 1: Introduction to the Bing Map Control

Luento 7 Expression Blend, XNA Luennon Tavoitteet: Expression Blend -työkaluun tutustuminen esimerkkien kautta XNA Framework Oheismateriaalina luento7.zip

Luentoharjoitus 15 Koodaus Expression Blendillä Oheismateriaalia googlesta: Creating a simple app (with Expression Blend) Luodaan Windows phone sovellus, jossa perus komponentteja käytössä.

Luentoharjoitus 16 Komponenttien muokkaus Expression Blendillä Alkutilanne: WP7 -sovellus, jossa nappula. Tavoitteet: Muutetaan nappulan käyttäytymistä Taustakuva Taustakuvan vaihto nappuloilla

XNA Framework XNA Framework on Microsoftin kehittämä, oliopohjainen peliohjelmointiin tarkoitettu kirjasto. XNA-ohjelmia voidaan ohjelmoida.net-yhteensopivilla kielillä. XNA on rakennettu DirectX:n päälle ja pyritty tekemään mahdollisimman yksinkertaiseksi ohjelmoida. Lisäksi XNA-ohjelmien tekemistä varten on tehty laajennuksia Visual Studioon. Tämä maksuton ja harrastajille tarkoitettu ohjelma on nimeltään XNA Game Studio Express. XNA Game Studiosta on olemassa pelitaloille myös täydellisempi versio. XNA-pelit toimivat PC:llä ja Xbox 360:ssä (fi.wikipedia.org/wiki/xna_framework, 21.2.2013) http://msdn.microsoft.com/en-us/centrum-xna.aspx http://xbox.create.msdn.com/en-us/education/documentation http://msdn.microsoft.com/en-us/library/bb203940.aspx

Luentoharjoitus 17 - XNA Pistetään kolmiulotteinen kuva pyörimään puhelimen ruudussa. Materiaali: luento7.zip (270 MB saatavissa luennoitsijalta )

Lähteet Microsoft Press ebook: Programming Windows Phone 7 (PDF) Microsoft Press ebook: Programming Windows 8 Apps with HTML CSS and JavaScript (PDF) http://www.developer.nokia.com Työkalut, App Hub, rekisteröinti, julkaisu ja ohjeet http://create.msdn.com Windows Phone osio löytyy MSDN:stä http://msdn.microsoft.com/library Windows Phone itseopiskelumateriaali(myös offline) http://msdn.microsoft.com/en-us/windowsphonetrainingcourse http://channel9.msdn.com/ Muut Windows phone itseopiskelumateriaalit???

............................