[Build 2012] Maps, géolocalisation et exécution en arrière plan.

November 01, 2012 -

Première session Windows Phone 8 de cette 3ème journée de //build/ 2012 (pas de keynote aujourd’hui!), on s’intéresse aux nouveautés concernant les maps, la géolocalisation et l'exécution en arrière plan !

WP_20121101_003

Location Services APIs

Les APIs de géolocalisation ont été complètement repensées sous Windows Phone 8. On conserve l’ancienne API .NET avec le GeoCoordinateWatcher pour la compatibilité ascendante, mais une nouvelle API WinRT est disponible et beaucoup plus complète !

Côté WinRT, on retrouve une nouvelle classe, Geolocator pour localiser un utilisateur. Il y a plus de contrôle sur la précision souhaitée (en mètres) et il est notamment possible de récupérer la position de l’utilisateur sans la tracker en continue (Single Location Request), ce qui permet d’économiser la batterie de l’utilisateur. Comme beaucoup d’API WinRT, celle-ci est totalement asynchrone (async/await). On retrouve aussi la possibilité de contrôler la mise en cache et les timeout.

En terme de bonnes pratiques, il faut utiliser au maximum le Single Location Request, quand c’est possible, car celà permet vraiment de réduire la consommation de la batterie !

En bonus, un bout de code sur l’utilisation de l’API Geolocator :

WP_20121101_005

Map Control et service de géolocalisation

Autre grosse nouveauté de la plateforme Windows Phone 8 côté cartes, l’utilisation des maps Nokia et des services de géolocalisation Nokia. On utilise un nouveau contrôle Maps qui permet notamment à l’utilisateur d’avoir ses cartes en mode offline pour ne plus consommer sa connexion de données et augmenter la fluidité ! Au passage, un nouveau launcher permet de proposer à l’utilisateur de télécharger une carte : MapsDownloader.

Le contrôle maps est capable d’afficher des cartes en 2D/3D, en vectoriel, ainsi que des itinéraires.

Avec cette carte, de nouveaux services arrivent pour effectuer directement des opérations de geocoding, géocoding inversé et de calcul d’itinéraire (il ne s’agit plus des services Bing, mais Nokia !)

Le BingMaps contrôle existe toujours pour la compatibilité des applications 7.x, mais il est déprécié !

L’utilisation du contrôle Maps et des services Nokia est gratuite, il faut juste associer son compte de développeur pour pouvoir récupérer un token.

Le maps toolkit extensions (http://phone.codeplex.com) permet d’avoir des fonctionnalités supplémentaires pour le contrôle Maps (pushpin etc..)

Géolocalisation en arrière plan

Sous Windows Phone 8, une application peut s’exécuter en arrière plan ET récupérer la position de l’utilisateur en continue (une seule application peut le faire). C’est uniquement possible pour les applications XAML (XAML, XAML+Direct3D, mais pas pur Direct3D).

En mode background, l’application n’a accès qu’à des ressources limitées et qu’à un sous ensemble des APIs :

WP_20121101_008

Comme pour les background agent sous Windows Phone 7.5, l’utilisateur peux désactiver l’application dans les paramètres du téléphone.

L’application peut être notifiée (event) et notifier l’utilisateur lorsque la géolocalisation est désactivée au niveau du téléphone.

Au niveau du cycle de vie de l’application, on a un nouvel événement : RunningBackground (en plus de Launching, Deactivated, Activated et Close) qui permet de savoir que l’application s’exécute en arrière plan ! Ce nouvel event remplace le deactivated pour les applications de géolocalisation en arrière plan :

WP_20121101_009

Fast Resume

Le fast resume est la capacité des applications Windows Phone 8 à reprendre là où elles étaient, même si l’utilisateur les relance depuis son écran d’accueil ou la liste des applications (contrairement à Windows Phone 7 ou l’application était totalement relancée!). Pour permettre à une application de faire du fast resume, il faut éditer le fichier manifest, au niveau de la définition de la DefaultTask (par défaut, le comportement est le même que sous Phone 7, “Replace”) :

fast app resume

Lorsque l’application est “résumée”, le mode de navigation dans la méthode OnNavigatedTo est à “Reset”, ce qui permet par exemple de vider la stack de navigation tout en conservant une ancienne instance de l’application (optimisation de la mémoire du téléphone et de la rapidité du chargement de l’application). Toutes les explications ici : http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj735579(v=vs.105).aspx

Conclusion

Beaucoup de nouveautés autour de la géolocalisation, avec le nouveau contrôle Maps de Noka, les APIs de Nokia pour le géocoding et surtout la possibilité d’avoir une application qui track la position de l’utilisateur en continue et en background !

Stay tuned Winking smile

Julien

Comments

Share

Tags


Twitter


Deep Learning, Simulation and HPC Applications with #Docker and #Azure Batch https://t.co/pwpvriYfV4

September 24, 2016 16:56

RT @aurelienmaury: Les devs de @kodokojo seront au prochain #Mesos UG Paris le 5/10 au palais des Congrès. Merci @microsoftfrance de nous p…

September 23, 2016 17:38

RT @FranmerMS: Enterprise ready: Power BI for iOS now supports Intune MAM capabilities https://t.co/SICRhrt3LK via @MSPowerBI

September 23, 2016 17:35

#experiences - retour d'expérience sur #aspnet core et #Azure par @SantinFlo, @SebastienOll et @m_dab ->… https://t.co/j7kvY3srPH

September 23, 2016 12:01

#experiences : retrouvez moi avec @benjiiim pour un tour d'horizon d'#aspnet core ! https://t.co/QxgfpYhf7v #dotnethttps://t.co/m4Fbxy3xOl

September 22, 2016 13:13

@dgageot @nclerc https://t.co/nJS7W6cTMl

September 22, 2016 07:27

#experiences - Quelles architectures pour vos applications Cloud ? De la VM au conteneur, ça #PaaS ou ça #CaaS :… https://t.co/MLbqRRIItD

September 22, 2016 07:00

After UK, Microsoft #Azure is now availble in Germany -> that means there are two more regions in Europe https://t.co/9cm5hF7Efw #HyperScale

September 21, 2016 17:52

Le "#serverless computing" expliqué par @tomconte c'est à Microsoft #experiences ! https://t.co/iyEY33cFmS #Azurehttps://t.co/o2RFzR6lpm

September 21, 2016 13:13

Microsoft experiences’16 – Architectes, développeurs ne manquez pas la journée technique du 5 octobre ! https://t.co/WfRFzojh96 #experiences

September 21, 2016 07:38

Microsoft wants to crack the cancer code using artificial intelligence https://t.co/bmsr5AYZrf

September 21, 2016 04:39

#DevOps and Continuous Delivery Reference Architectures Using #Docker https://t.co/wOgkDmyOb0

September 20, 2016 08:50

Refreshing user logins in @Azure #AppService Mobile Apps https://t.co/rGpj0TIRvP

September 19, 2016 19:04

RT @OpenAtMicrosoft: KK announcing #Jenkins Project moving to @Azure at #JenkinsWorld during morning keynote https://t.co/Qyl87qpuWe

September 14, 2016 20:58

Announcing September 2016 Updates for .NET Core 1.0 https://t.co/qhJcGYkoTI #dotnet #dotnetcore

September 14, 2016 05:49