[Microsoft Days 2011] Nouveaux scénarios d’applications avec le SDK Windows Phone 7 “Mango”

La mise à jour vers Windows Phone 7.5 codename “Mango” apporte son joli lot de nouveautés tant pour l’utilisateur que pour les développeurs. Pierre Cauchois, évangéliste Windows Phone chez Microsoft, nous a présenté le nouveau kit de développement et le potentiel qui s’offre à nous.

Windows Phone 7.5 = SDK 7.1

Pour que les choses soient claires, la mise à jour Windows Phone 7.5 s’accompagne de la verison 7.1 du SDK. On ne tentera pas de chercher la logique du pourquoi ou du comment, merci au marketing !

Le tour d’horizon des nouveautés

La session était riche en contenu, et même si on passait vite sur les notions, Pierre n’a rien manqué. Commençons par un tour rapide de quelques nouveautés importantes :

  • Gestion du multi-tâche
  • Accès aux données du téléphone : calendrier, contacts, etc.
  • Cohabitation entre XNA & Silverlight
  • Intégration avec plus de fonctionnalités du téléphone : AppConnect
  • Performances : meilleure gestion des listes, qui deviennent globalement beaucoup plus fluides, sans modification de code
  • Base de donnée locale : SQL CE

On dénombre plus de 1500 nouvelles APIs pour cette mise à jour, de quoi répondre à de nombreux nouveaux scénarios !

Notifications et live tiles : que du mieux !

Les Windows Phone signent leur particularité par ce qu’on appelle les “live tiles” ou tuiles dynamiques. Il s’agit de tuiles épinglées sur la page d’accueil qui affichent des informations supplémentaires, telles qu’un compteur de mails non lus, ou se retournent pour afficher les dernières notifications Facebook.

C’est un peu la signature de l’OS, et Microsoft a mis le paquet pour en rendre le développement plus simple. On retrouve ainsi une API pour créer et manipuler plusieurs tuiles par application. Chaque tuile est composée de 2 faces éditables et peut constituer un raccourci vers une page de l’application.

AP_Tiles_TileComponentsFrontAP_Tiles_TileComponentsBack

On peut toujours afficher des toast notifications, avec maintenant un lien vers l’application lorsqu’on clique dessus (deep toast).

On notera également quelques améliorations dans la gestion des notifications push, en pouvant mettre à jour les compteurs des tiles (tile notifications) ou en affichant des messages (toast notifications).

Distribution des applications

Le point central de publication des applications reste le MarketPlace. On peut maintenant publier son application de 2 façons différentes :

  • Beta : jusqu’à 100 invités peuvent tester votre application
  • Privé : l’application est uniquement accessible et installable via un lien privé (utile au déploiement en entreprise)
  • Public : l’application est disponible sur le MarketPlace, à la vue de tous

Réseau : sockets pour tous et améliorations

Les développeurs de jeux seront heureux d’apprendre le support des sockets (TCP/UDP) et du multicast ! Voilà de quoi nous offrir quelques parties multijoueurs endiablées, avec serveur ou via multicast.

Cette mise à jour amène également l’accès aux headers des requêtes WebClient (intéressant pour l’authentification).

L’état de la connexion est également disponible via une API, utile pour notifier l’utilisateur en avance de phase, avant un appel réseau quelconque.

Outils de développement

Les outils de développement restent au top et s’enrichissent avec :

  • Nouveaux templates de projet (background agents, 3D graphics, Silverlight/XNA, etc.)
  • Isolated Storage Explorer : liste, copie, et remplace les fichiers et répertoires de l’Isolated Storage
  • Profiler : pour cibler les problèmes de framerate et d’utilisation des threads CPU/GPU
  • Marketplace Test Kit : permet de soumettre votre application aux mêmes tests que la certification, ce qui évitera quelques aller-retours dans certains cas
  • Emulateur : intègre la simulation des capteurs GPS et accéléromètre, et la possibilité de prendre des screenshots (youpi !)

Simulation de l'accéléromètre

Simulation du GPS

Profiler

Profiler

Runtime amélioré

La CLR a été boostée ! On notera de meilleures performances dans la sérialisation/désérialisation, un garbace collector générationnel pour une action plus sélective et moins fréquente.

Ne pas oublier également que WP 7.1 embarque la version 4 de Silverlight, avec son lot de nouveautés (accès au Clipboard, styles implicites, PathListBox, RichTextBox …).
En prime, il est désormais possible de faire cohabiter du XNA et du Silverlight ! Autant dire que ça risque de simplifier de nombreux développements, notamment du côté des menus.

Un nouveau thread dédié à l’input a été ajouté. Cela touche notamment les ListBox qui deviennent sensiblement plus fluides, sans aucune modification de la part du développeur.

Le décodage des images peut maintenant se faire en tâche de fond pour ne pas monopoliser le thread de l’UI.

Enfin, le support du SIMD marque la parallélisation des opérations sur les vecteurs en XNA.

Multi-tâche

Fast Application Resume

Grâce à un appui long sur la touche “précédent”, Mango nous offre une gestion du multi-tâche permettant de basculer d’une application à une autre très rapidement : c’est ce qu’on appelle le Fast Application Resume.

Auparavant, pour économiser la batterie du téléphone, une application quittée l’était complètement, sans aucune persistante en RAM. Il était de la charge du développeur de sauvegarder l’état de l’application pour pouvoir le restaurer lors d’une éventuelle reprise, suite à l’appui sur précédent ou au verrouillage de l’écran. Ce procédé s’appelle le tombstoning.

Sous Mango, les applications sont persistées en RAM le plus longtemps possible, jusqu’à ce que le système ait besoin de plus de ressources. Ainsi, la reprise est immédiate, et on n’a plus d’écran d’attente lorsqu’on bascule d’une application à une autre.

Background agents

Le multi-tâche en 7.5 n’est pas du vrai multi-tâche au sens OS de bureau, les applications sont mises en pause. Heureusement, on nous fournit de quoi maintenir une certaine activité en fond de tâche : les background agents.

On retrouve plusieurs agents “dédiés” :

  • Audio playback/streaming : joue de la musique en fond depuis le téléphone ou en streaming
  • Transfer Service : gestion du download/upload de fichiers en tâche de fond
  • Alarms & reminders : popup d’alerte s’affichant à une heure précise
  • Task Scheduler : tâche planifiée, de 2 types possibles
    • PeriodicTask : exécutée toutes les 30mn, limite de temps d’exécution à 25s pour un cap à 6Mo d’utilisation mémoire
    • ResourceIntensiveTask : 10mn d’exécution max, intervient lorsque l’appareil est connecté à une prise de courant et au WiFi, bien chargé et avec l’écran verrouillé

Il conviendra de bien faire attention à toutes les contraintes inhérentes à l’utilisation de ces agents (limitations d’API, utilisation mémoire, etc.). Il s’agit avant tout de ne pas faire fondre la batterie.

Capteurs

Une application peut avoir accès à la caméra, afin de gérer toutes les fonctionnalités de prise de vue (activer ou non le flash, gérer l’autofocus) ou traiter en temps réel le flux d’image capturé.
Cela ouvre les portes de la réalité augmentée, nous en reparlerons à la fin dans les nouveaux scénarios.

Dans les autres capteurs disponibles, on ajoute le compas, le gyroscope et le “motion” qui combine accéléromètre, compas et gyroscope. Comme remarqué plus haut, les outils de développement sont enrichis pour accompagner le développement.

Données

Mango marque l’ajout du support de SQL CE, afin de stocker des données dans une base de données locale. L’approche est « Code First », c’est-à-dire que la base de données est créée d’après les classes taggées d’attributs tels que Table ou Column. On utilise ensuite Linq To SQL pour lancer des requêtes.

Une nouvelle API donne l’accès en lecture aux calendriers, aux contacts.

De nouveaux launchers et choosers font aussi leur apparition pour :

  • choisir une adresse
  • inviter des amis joueurs à une session de jeu
  • sauvegarder une sonnerie
  • sauvegarder un contact
  • partage un statut sur les réseaux sociaux
  • rediriger vers Bing Maps avec ses propres paramètres (coordonnées, adresse , ou itinéraire).

L’intégration des OData est simplifiée avec la génération automatique d’un proxy à partir de Visual Studio (Add Service Reference).

AppConnect

L’AppConnect, c’est le concept derrière lequel Windows Phone se différencie de ses concurrents. En effet, le contenu des applications peut être intégré aux résultats de recherche ou aux hubs musique & vidéos et photos.

Ainsi, une recherche sur Bing d’un livre par exemple, peut proposer d’accéder à la fiche produit de ce livre dans une application type Amazon ou eBay. Simple et pratique, le principe est d’afficher les données au moment où elles sont le plus utiles.

Nouveaux scénarios

Toutes ces nouveautés ouvrent des possibilités énormes pour les applications de demain. Pierre nous a mis l’eau à la bouche en présentant quelques aperçus de ce que peut donner le mélange des fonctionnalités.

Amélioration d’une application existante

Pierre nous fait la démonstration d’une application de présentation les services d’une ville. Pour repérer quelques lieux-clés, l’application intègre un contrôle Bing Maps. En soi, c’est plutôt une bonne idée, seulement sa lourdeur et ses limitations ne répondent pas à toutes les exigences.

Grâce à Mango, on peut rediriger simplement vers Bing Maps avec le nouveau launcher associé. On gagne ainsi toutes les fonctionnalités de l’application Bing Maps native, avec les itinéraires, les environs, etc.

Autre bienfait de Mango : le Fast Application Switching, qui comparé au tombstoning, se veut autrement plus rapidement au moment de la restauration de l’application.

Réalité augmentée

Evidemment, avec le gyroscope et la nouvelle API Motion, vous vous doutiez qu’on en arriverait à de la réalité augmentée.

Il faut revenir sur les concepts de base, avec la projection depuis un monde 3D vers un écran 2D pour comprendre les problématiques inhérentes à ce type de concept. Retour à l’école, avec la manipulation de matrice pour application des transformations (rotation, redimensionnement, translation).

Malheureusement, la démonstration live de Pierre n’a pas pu fonctionner faute de connexion data 🙁

Par contre, avec l’accès à la caméra, rien n’empêche de laisser libre court à son imagination, en pensant à des applications dans les jeux, la détection de visages, le scan de codes barre, etc.

Application métier

Du côté des applications dites “métier”, la base de données SQL CE devient un bon allié et ouvre à de nouvelles possibilités de recherches dynamiques et stockage de données complexes.

On peut également compter sur le traitement périodique en arrière-plan pour synchroniser des données. On peut penser à des compteurs de messages non lus, des notifications de rendez-vous…

La distribution privée va également dans le sens des entreprises en proposant un déploiement via une simple url. Attention néanmoins, n’importe qui possédant l’adresse de l’application peut la télécharger. Il convient de sécuriser l’application avec une authentification au démarrage.

Conclusion

Une session bien intéressante, qui a dévoilé les nouvelles saveurs de cette mangue sacrément mure ! Windows Phone joue maintenant dans la cour des grands et compte bien y bousculer du monde.

Nombre de vue : 27

AJOUTER UN COMMENTAIRE