Lowlands Windows Phone Developer Day 2014

Lowlands Windows Phone Developer Day
 
“Op zaterdag 18 oktober komen we met z’n allen (Belgen en Nederlanders!) bij elkaar in Tilburg om een hele dag te luisteren naar experts op dit gebied, om kennis te maken met andere Windows Phone enthousiastelingen en uiteraard om zelf te hacken!”
 
Ik ben aanwezig geweest bij de Lowlands Windows Phone Developer Day! Dit het tweede event want vorig jaar is dit begonnen met Windows Phone week. En tussendoor is er nog de battle geweest, een soort van hacketon met een Nederlands en een Belgisch team. Daarom is het nu ook in Tilburg georganiseerd. Prettig, een dagje in de buurt.
 
Na de opening door Dennis Vroegop zijn er twee parallel tracks gestart. Ik heb samen met collega Alex Faessen en Frankwin Faber een aantal sessies gevolgd.
 
DISCLAIMER: Dit werd live ingetypt. Typo’s en misinterpretatie van de spreker ligt op de loer…
 
Joost van Schaik – Geofencing
Geofencing is de mogelijkheid om je app acties te laten ondernemen op het moment dat je telefoon of tablet in de buurt van bepaalde locaties komt – of deze juist weer verlaat. Deze sessie laat je zien hoe je dit moet doen – in zowel in de voorgrond in een actieve app, als wel als in een achtergrond taak, zonder dat je steeds de locatie hoeft te pollen. Gebruik makend van universal apps kom je te weten hoe je deze techniek zowel in Windows Phone als Windows kunt toepassen, alsmede hoe je met handig gebruik van de emulator c.q. simulator zaken kunt testen.
 
Joost van Schaik aka LocalJoost zit in de GEO business.
 
Geofencing is rond een fysiek punt op de aarde een virtuele grens leggen. Er gebeurt iets als je over die grens stapt. En het wordt echt interessant als dit controleren continue, op de achtergrond, plaatsvindt.
 
Het zat al een tijdje in de Windows 8.X maar er zijn weinig devices met zo’n GPS dongle ingebouwd. Maar de logica kan als PCL geschreven worden en is daarmee ook voor Windows Phone beschikbaar.
 
Het kan zowel op de voorgrond als op de achtergrond toegepast worden, maak een keuze welke versie je gebruikt. De event mogen niet dubbel doorkomen, dit kost resources (batterij) en kan de logica/werking van je app verstoren .
 
Demo tijd met een Windows Phone simulator…
 
Joost demonstreerde een universal app want dan draait het op alle apparaten. Hij had ook een aantal hulpbibliotheken toegevoegd, waaronder één voor cirkels op het scherm (geopoint+radius=lijst van geopoints om een cirkel op de kaart te tekenen). We kunnen namelijk geen cirkels op de kaart tekenen.
 
Overigens gebruikt Joost voornamelijk Geopoint want die zijn interessanter dan BasicGeoPosition, een andere klasse waar we code mee schrijven.
 
Er is ook een GeoFence object. Die wordt toegepast door de GeoFenceMonitor. Hier kun je fences aan toevoegen: voor eenmalig gebruik en of je zowel bij binnenkomst of bij vertrek een signaal wilt krijgen. Een fence is dus een cirkel op de kaart. MSFT kent momenteel nog geen andere vormen. Of dit uitgebreid wordt met bv. Vierkanten, rechthoeken of polygonen is onbekend. Joost kon hier geen uitspraak over doen.
 
Ook is er de dwellingtime. Je wilt er zeker van zijn dat iemand echt een fence ingaat of verlaat. Normaal is die 10 seconden en dat is onhandig bij kleine fences en een hoge snelheid. Pas dit dus aan.
 
Overigens kreeg Joost het signaal van binnenkomst niet goed door. Waar zit de bug?
 
De GeoFenceMonitor geeft events af. In dit event moet je de rapporten van de monitor aflopen en actie ondernemen.
 
Demo met Windows 8…
 
De demo met de Windows 8 simulator was wat lastig. Je kunt steeds maar 1 coördinaat invoeren. En Joost gebruikte toasts, iets wat de simulator niet aankan. Joost lost dit op met een Debug.WriteLn. lol
 
En hij gebruikte bing maps. Vraag daar een key voor aan. De app verliest hiermee overigens de ‘any cpu’ compiler output. Zet ook even de capabilities aan (geo stuff en toasts).
 
Met bing maps krijgen we ook kaart layers tot de beschikking en polygonen!
 
Dit was tot nu toe allemaal code die op de voorgrond draait.
 
Om dit op de achtergrond te gebruiken, gebruiken we de location trigger. Helaas laat MSFT deze slechts iedere twee minuten afgaan om de batterij te sparen. Realtime meten moet dus in een draaiende app plaatsvinden.
 
Microsoft maakt de snelheid uit. Gebruik dit dus niet voor Mission critical.
 
Joost had de backgroundtask nog niet in een PCL gezet. Hij wist ook niet of dit zou kunnen. Wellicht wel…
 
Vergeet niet de background task voor locaties te declareren. En je moet ook de lockscreen badge toevoegen als je toast wilt draaien.
 
Demonstreren kan door de build op Local Machine te zetten, run de app dan zonder debugger. En start daarna de simulator. Want dan denkt de simulator dat er een background task is. Joost heeft er een sheet over 🙂
 
Het was dus een interessante presentatie. Ik wil dit wel gaan gebruiker. Ik kan hier erg leuke apps mee verzinnen.
 
Tijd voor koffie en daarna track 2.
 
Nico Vermeir – Background tasks in Universal Apps
 
Met de komst van Universal Apps werd ook het background processing verhaal op de schop genomen. Voornamelijk voor Windows Phone zijn er grote veranderingen.
 
In deze sessie doorloop ik een aantal scenario’s waarin een app een background task kan gebruiken, de verschillende vormen en soorten en hoe die geïmplementeerd worden.
 
@NicoVermeir geeft een presentatie over background tasks. Lol: het gaat op Windows 10 gepresenteerd worden.
 
Er zijn verschillende types.
 
Eerst moet je een Windows Runtime component project toevoegen. Daar moet de backgrond task in draaien. Waarom? Geen idee.
 
De task implementeert een interface IBackGroundTask. Deze heeft slecht één methode: Run. Registreer daarna de task.
 
Background tasks werken met triggers. Bv. Het benaderen of verlaten van een geofence. Deze task kan ook conditioneel uitgevoerd worden (in Big Windows). Denk aan draaien binnen lockscreen of connected zijn.
 
De gedemonstreerde types zijn: Push, Triggered en Geofencing.
 
Nico demonstreert eerst met een blanco shared project. Handig want dat is overzichtelijker voor de uit te voeren codeer stappen. (tip: stop geen xaml in je shared project)
 
– Voeg een portable project toe
– Implementeer de IBackgroundTask interface
– Nico voegt wat code toe om een teller op te hogen afhankelijk van het aantal keren wisselen van timezone door de background task. Dit is de System triggered background task
– Nico speelt met de ‘deferral’. Hiermee geeft de task aan dat hij nog even bezig is (denk aan langdurige acties). Kans op vroegtijdig afbreken door het OS neemt hiermee af.
– Pas je capabilities en declarations aan; wat mag de app?
– (er is ook een update task voor Windows Phone. Dit is heet handig voor als er updates klaar staan voor je app. Helaas heeft Nico dit overgeslagen)
– Voeg ook het entry point toe in het manifest. Let op: maar geen schrijffouten.
– Windows 8 moet ook lockscreen capable zijn. De naam van de badge logo wordt niet echt afgetest… En dam oenten we ook de Timer instellen in het manifest…
– Op de mainpage code behind moet de task ook geregistreerd worden. Doe dit in de Loaded event (awaitable backgrondexecutionmanager.RequestAccessAsync) De gebruiker krijgt op Big Windows dan een vraag of die background task wordt toegestaan.
– En we hebben een systeemtrigger en een entrypoint nodig (niet dubbelop: hier zeggen we wat we echt gaan executeren)
– Register op de taskbuilder
 
Debuggen kan met een breakpoint in de code. Nico demonstreerde dat met automagisch in de IDE na wat rebuilden dat de code aangeraakt wordt.
 
Daarna ging Nico door naar de Geofence background task. Hier was wat overlap met de demo van Joost.
 
Dit gaat met een LocationTrigger ipv. een systemtrigger. En daarna werd een Fence toegevoegd aan de geofence monitor toegevoegd. En hierna werd Location aan het manifest toegevoegd.
 
Ook Nico gaf net als Joost een toast af. Nico gaf aan dat de geofence demo niet echt lekker werkt op Windows 10. Ging het lukken? Niet direct 😦 We mochten gelukkig geloven dat het wel werkt 🙂
 
En vervolgens ging Nico demonstreren hoe we op notificaties konden reageren in een background task. Hiervoor is een extra task nodig met Pushnotification trigger. (vergeet niet de app al te registreren in de store en de code een associatie met de code app te geven. De app hoeft dus nog niet daadwerkelijk gepubliceerd te zijn.)
 
Helaas hadden we last van de demogoden voor de demo (of een irritante proxy?). Iedereen in het publiek kon pushnotificaties genereren via een azure cloud websitepagina. Ook hier mochte we geloven… De zaal zat blijkbaar blijkbaar vol met ‘beliebers’ 🙂
 
Overigens zijn er wat beperkingen aan de aantal keren dat de backgroundtask afgevuurd wordt. Het OS maakt het uit afhankelijk van hoeveelheid geheugen op het toestel, type background task, battery saver, etc.
 
Bij 8.1 kan het gedrag van de battery saver per app overruled worden.
 
Al met al was de presentatie erg interessant, helaas gingen een aantal demo’s minder vloeiend.
 
Lunch!
 
Fons Sonnemans – Twelve ways to make your apps suck less
 
In deze sessie leert Fons Sonnemans je aan de hand van 12 uiteenlopende onderwerpen je apps beter te maken. Hierin komen technische onderwerpen, design en marketing aan bod. Een sessie vol met do’s en dont’s voor je eigen apps.
 
Zo, de smakelijke lunch is verslonden. Op naar de volgende presentatie.
 
Fons heeft 1.8 miljoen downloads uit de Windows 8 store ondanks dat deze nog maar kort actief is. Dat uitgezet tegen 750.000 downloads na vier jaar en 25 apps in de Windows Phone store. Fons deelt met ons ervaring en tips. Hier een bloemlezing:
 
– Schrijf vanaf nu universal apps. Schrijf Windows 8 apps en breng het ook voor Windows Phone uit. Schrijf met Windows 10 in gedachte.
– Universal apps hebben ‘last’ van de fontsize uit de ease of access. Maar tekst past wellicht de knoppen . Pas dan opelementen de TextScaleFactorEnabled = False toe. Niet zo aardig maar wellicht wel handig. Gebruik met mate dus
– Ga naar Design.Windows.com . Lees dit eens door. Gebruik de guidelines. Design voordat je ontwikkelt. Wat is je visie? Waar blinkt je app in uit? Denk aan de unique selling point. Er is ook gallery met voorbeelden die er mooi uit ziet.
– De tegel van je app is het meest belangrijke 🙂 Het is je eye-catcher, je uithangbord. Pak de goede formaten en scale netjes. Op phone wordt het voor jou gescaled, handig. Gebruik een goede vector tool zoals Microsoft Expression Design (gratis van MSFT). Genereer vanuit dit programma slices met alle gewenste formaten en zelfs de transpartante tile. De tool maakt dan de bestandjes aan via de export.
– Creeer je eigen custom thema’s. Volg niet die van de gebruiker met zijn kleur. Want we willen een eigen identiteit. Dat is heel eenvoudig voor de eigen identiteit. Even doen is even weten. Gebruik ThemeManager van Dave Smits (is iets minder, moet beter) of hack de xaml files. Bij Windows Phone moet je enkele keren SystemColorControlAcetColor overrulen (want voor iedere thema wat je wilt overrulen). Bij Big Windows moet je veeeel meer doen. Of gebruik Hammer.Pants (Gedemonstreerd).
– Maak je app mobiel. Gebruik de juiste HttpClient, de Windows.Web.Http variant. Deze is veel beter dan de vorige variant.
– Zorg er voor dat je app ook bij een gebrekkig netwerk nog steeds werkt. Gebruik json, en alleen xml indien echt nodig. Test je internetconnectie type en pas je communicatie daar op aan.
– Gebruik datasense: zit je op internet? Zit je op wireless lan? Kost dat geld? Zit ip op 3g/4g? zijn daar geen kosten op? Of wel? En benaderen we of hebben we de kostenlimiet benaderen? (kijk hiervoor naar de WIN-B326 sessie van TechEd)
– Krijg veel en goede reviews. Smeek! Laat klachten gemaild worden? Laat je review dan bijwerken. Op Phone kan je ook een response geven op de review (geen idee hoe het werkt. Er werd geroepen dat het wellicht ook maar in een paar landen werkt).
– Gebruik JPG voor grote foto’s. Gebruik PNG voor perfecte kwaliteit. Schaal ook. Maar vectors werken altijd via de Path. Fons demonstreerde ook het gebruik van FontIcons Doe dit in Blend icm. Fontastic.me (gratis, even registreren).
– Grids en listviews moeten performen: Kijk naar het filmpje op vimeo van Kevin Dockx: Windows 8.1 apps. Given to Fly.
– Gebruik resource files voor verschillende talen. Met Engels alleen raak je maar 25 procent van je publiek in de wereld. Test via het schuiven in de language preferences op je ontwikkel PC. Of gebruik de vertaal tool van Microsoft. Die gebruikt Bing Translate
– Gebruik Blend
– Gebruik MVVM
– Windows apps worden niet meer op inhoud afgekeurd bij de keuring voor de store. Er wordt alleen achteraf ingegrepen bij klachten.
– Cache de eerste pagina! Kom steeds terug van een detail scherm op de plek waar je vertrok. Bij Phone werkt dit. Bij Windows niet: Gebruik de Cache mode regel ook in Windows. En de pagina cache size kan vergroot worden. Let op nevengedrag
 
Kortom, Fons heeft enkele zeer handige tips doorgegeven. Dankjewel. Volg zijn blog want enkele van deze tips zijn of worden daar in detail uitgelegd.
 
Diederik Krols – Cortona / speech integratie
 
In deze sessie toont Diederik Krols hoe je je Windows Phone 8.1 app kan opstarten en aansturen via de nieuwe Cortana services. Verder wordt dieper ingegaan op spraakherkenning (speech-to-text) en spraaksynthese (text-to-speech) in Windows Phone apps (zowel Silverlight als Universal).
 
In de pauze heb ik weer even een Surface 3 Pro vastgehouden. Wat een fantastische machine!
 
De laatste sessie voor vandaag is die van Diederik over Cortana en je app starten met Cortana.
 
Cortana levert spraakherkenning in Windows Phone en met Windows 10 ook op pc’s en tablets. Standaard wordt nu nog alleen Engels ondersteunen en zijn het vooral de standaard apps (alarms etc.) die het ondersteunen.  Je kunt ook afspraken maken en wat denk je van herinneringen? En Cortana doet aan geofencing.
 
Vraag maar eens “What can I say?” of “What can you do?”
 
Met de duurdere telefoons staat Cortana ook passief te luisteren op “Hey Cortana” zodat deze altijd staat te luisteren/wachten (op dat zinnetje).
 
Cortana werkt zowel in Windows Phone Silverlight als in Universal apps. Windows 8.1 lust het niet.
 
Diederik demonstreerde gelijk al dat hij zijn eigen app via Cortana kan opstarten. En binnen de app liet hij via de stem van Cortana een voorbeeld tekst voorlezen. Ook bleek er andere (mannelijke) stem te zijn.
 
Voor Cortana willen we dus:
 
– Maak voice command definities
– Registreer jouw vcd’s bij start van de app
– Reageer bij de app start op doorverwijzingen vanuit Cortana
 
Een VCD valt uiteen in CommandSets met een combinatie van commandprefix, commands etc. Dit al werkt zonder Wifi/data contract.
 
Het valt me op dat je bij de definities vooral in voorbeeld zinnen denkt en dat ik het bijbehorende gedrag moet opgeven. Dit is dus lekker fuzzy en minder ‘wiskundig’ met zinsopbouw.
 
De Phrase Topics zijn nieuw maar werken echt fuzzy, over het internet. Diederik heeft het niet gebruikt omdat het onduidelijk was of er vandaag Wifi zou zijn.
 
Tip: gebruik de taal van de commandset (= engels voor de grootste kans dat Cortana er goed mee om kan gaan)
 
De registratie is redelijk eenvoudig. De commandset moet aan Cortana bekend gemaakt worden. De code is lichtelijk anders tussen de twee verschillende project soorten.
 
Ook reageren gaat soms iets anders. In Windows Phone Silverlight moet dit in de Main pagina. Daar test je of je via Cortana opgestart bent. En als dit zo is, dan reageer je hier op.
 
Bij Universal apps wordt dit in de App.Xaml opgelost en naar de juiste pagina genavigeerd.
 
Je kunt testen of de opdracht een Voice command is. En als dit zo is, kun je de naam van het command opvragen. En daarna kun je weer onderdelen  van dat command uitvragen. Bij de doorverwijzen naar de juiste pagina geef jij dan ook de context van de aanroep door. Geef bij voorkeur niet direct de Cortana opmerking door.
 
Je moet ook zelf testen of de app discreet in ‘silent’ mode gestart wordt. Dan moet je jouw app ook niet geluid gaan maken. Dit is dus de ‘text mode’.
 
Dit waren de commando’s. Natuurlijk taal kan dus ook ondersteund worden.
 
Je kunt ook speach synthese toepassen om teksten uit te spreken. Ook hier zijn er enkele verschillen tussen de twee project types.
 
En er is dus binnen de app ook een SpeechRecongnition mogelijkheid. Dit kan uit losse worden bestaan. Maar er is ook mogelijkheid om grammatica op te stellen (volgens een zeer uitgebreide standaard definitie). Helaas lijkt dit veel minder fuzzy te zijn dan wat Cortana gebruikt. Persoonlijk komt me dit bekend voor, ik meen dit al vaker gezien te hebben met spraakherkenning in Windows (al vanaf versie Xp of zo?)
 
Deze presentatie van Diederik was uiteindelijk dus erg interessant. Dit is een mooie ear-catcher voor je gebruikers.
 
Deze presentatie van Diederik was erg interessant.
 
Dat waren de presentaties die ik gevolgd heb. Het was weer een aangenaam en nuttig dagje om mijn Windows (Phone) kennis bij te spijkeren. Een enorme dankjewel dus voor de organisatie en sprekers. Op naar de borrel!
 
 
Advertenties