SDK Surface 2 : Présentation

by Nicolas Calvi 12. juillet 2011 17:00

Il est enfin arrivé, le SDK Microsoft® Surface® 2.0, vous pouvez d'ailleurs le télécharger à cette adresse :

Télécharger le SDK (Direct)

Page de ressource pour le SDK

Maintenant il n'y a plus qu'a l'utiliser, mais avant cela certaines explications s'imposent. 

Microsoft Surface 2 SDK, un nom trompeur :

Comme son nom l'indique, ce SDK est fait pour développer des applications pour la table Microsoft Surface 2.0 qui sortira très prochainement. Cependant, ce SDK sert aussi pour le développement d'applications pour les périphériques tactiles compatible Windows 7 Touch, le "Write once - touch anywhere". En effet, Tablette, Ecrans tactiles et autres périphériques compatible Windows Touch peuvent utiliser ce SDK.

L'avantage est double, dans un premier Microsoft unifie les développements tactiles autour de WPF et XNA avec un Framework tactile unifié et compatible entre tous les périphériques. Dans un second temps, cela permet de mutualiser les développements en créant ses propres bibliothèques "Touch" qui peuvent être utilisées sur tous les supports.

Prérequis d'installation

Pour pouvoir utiliser ce merveilleux Framework, vous devez avoir :

- Un PC sous Windows 7

- Visual Studio 2010 (la version Express fonctionne aussi)

- XNA Game Studio 4

- Optionnellement Blend 4

Et bien sur le SDK en question, c'est tout, vous pouvez ainsi créer des applications tactiles en XNA ou WPF.

Qu'est-ce qu'il y a dans la boite ?

Le SDK est fournis avec un certain nombre d'outil pour vous permettre de développer dans les meilleurs conditions, et ce, même sans périphérique tactile.

- Input Simulator
Cet outil permet de simuler les contacts sur votre ordinateur, on peut simuler des "doigts", des "blobs" et des "tags" dans la pure tradition Microsoft Surface. Il est possible aussi de simuler l'orientation de la table, le fameux "Tilt". Il peut aussi servir à simuler les contacts pour les écrans tactiles ou les tablettes.

 

 - Input Visualizer
Cet outil permet de voir la trace des contacts sur la Surface, en gros de bien visualiser les entrées qui sont effectuées sur le périphérique.

 

 - Surface Stress
Ce dernier outil permet de lancer une simulation (agressive ou pas) de "Touch" sur son application afin d'en tester les limites au cas ou des hordes d'utilisateurs viendrais sur celle-ci. Pour cela, on va configurer dans un XML les "Touchs" qui seront effectuer sur l'application et donc permettre de tester l'application sur certaines zones. Il est possible de paramétrer beaucoup de chose, nous verront cela dans un autre billet.

Tout pour commencer dans de bonne condition

Ce SDK nous donnes donc accès à tous les outils nécessaire pour développer et tester des applications tactiles sous Windows 7 et Microsoft Surface 2.0. Il s'accompagne aussi d'une revue des contrôles en style "METRO", la ligne directrice en matière d'ergonomie et de Design, initié par Windows Phone 7. Cela inaugure donc le futur Design qui sera appliqué à Windows 8, c'est donc un aperçu important sur les choix de Microsoft pour ses futures interfaces.

 

 C'est donc une avancée majeure pour la programmation Tactile qui vient d'être proposé par Microsoft. Dans les prochaines semaines, je vous propose de découvrir les contrôles, les outils et le modèle de développement plus en détail.

SDK Microsoft® Surface® 2.0 le 12 juillet !

by Nicolas Calvi 8. juillet 2011 11:11

Ca y est c'est officiel, le SDK Microsoft® Surface® 2.0 sera disponible le 12 juillet sur MSDN. Tous les détails sont sur le blog Surface :

Article SDK sur le Surface Blog

Dès le 12 juillet je vous proposerais chaque semaine des articles sur ce nouveau SDK.

L'ère du tactile vient de faire un grand pas en avant !

Le Black Blog fait peau neuve

by Nicolas Calvi 4. juillet 2011 23:30

Bonjour à tous.

C'est l'été et le Black Blog fait peau neuve, cela ne se voit pas forcément au premier abord, mais nous voici sur un BlogEngine 2.0. Cela permettra d'avoir un peu plus de fonctionnalité.

Pendant cet été je vous prépare une série d'article sur le SDK Microsoft(r) Surface(r) 2 qui ne devrais pas trop tarder (on croise les doigts), j'y aborderais plusieurs aspects afin de vous permettre de bien commencer avec ce formidable outil.

En attendant je vous souhaite de bonne vacance.

MIX11 : Quelques retours

by Nicolas Calvi 21. avril 2011 18:22

Je reviens du MIX 2011 ou j'ai pu y voir de nombreuse choses très intéressantes, je vous propose des petits résumés des sessions que j'ai appréciés avec le lien vers la webcast.

A Whole NUI World : Microsoft Surface 2 and Windows Touch (Par Johanna Rowe) - DVC07

Une Interface Utilisateur Naturelle n’est pas une technologie. Le touch n’est pas une NUI mais c’est le fait d’appliquer une technologie aux besoins d’un utilisateur en prenant en compte cet utilisateur dans la globalité (âge, connaissance des nouvelles techno etc.) qui va rendre une interface « naturelle » ou pas. C’est ainsi que Luis Cabrera voit les NUI. Parlons maintenant de Surface V2, comme vous le savez peut-être déjà, elle peut être utilisée à l’horizontal, à la verticale, à 45° etc. A ce propos, Luis reviens sur l’importance de bien comprendre qu’une application réalisée pour une utilisation horizontale ne peut pas être transposée à la verticale sans être repensée. La raison en est que chaque différente orientation de la table implique des utilisations différentes dans des contextes bien distincts et donc, des expériences différentes. Un exemple énoncé par Luis : si on essaie de porter une application pensée à 360°, comment va réagir l’utilisateur une fois la table à la verticale ? Il devra mettre sa tête en bas pour pouvoir continuer à utiliser toutes les features de l’application… Côté technique, Luis a présente la nouvelle version du SDK. Elle apporte une boite à outils beaucoup plus complète et plus simple à utiliser que le simulateur de la V1. Elle permet, par exemple, de manipuler plusieurs contacts en même temps. Enfin, l’équipe Surface a préparé un outil de migration de la V1 à la V2. Lorsque cet outil n’est pas suffisant, il faudra se reporter aux guides de migrations Surface.

Get ready for fast application Switching in Windows Phone - DVC09

Dans cette session, on nous a présenté la nouvelle façon dont Mango va gérer le Tombstoning, à savoir le rechargement d’une application après l’avoir désactivée.
Actuellement, si on change d’application ou si on revient au menu, le Framework lance un « NavigateFrom » puis lève un événement « Desactivated » et on a quelques secondes pour persister l’état de notre application avant qu’elle ne soit tuée. Ensuite, au moment de la réactivation, l’événement « Activated » est levé, puis « NavigateTo » et c’est à nous de repositionner l’état de notre application.
Dans Mango cela va changer. En fait, Mango va faire un snapshot de tous les états de notre applications et va le restaurer ensuite en l’état. Nous n’avons donc rien à faire pour récupérer l’état de note application.
Il en va de même des connections que nous avons avec les Sensors : le Framework va automatiquement détacher le Sensor de notre application puis ensuite le ré-attacher, on conserve donc les accès à la caméra ou autres Sensors du WP7.
Par contre, de temps en temps, Mango fait du Tombstoning et là il faut faire comme avant. Pour savoir, au moment de la réactivation, si on est en Tombstone ou non, il faut tester la propriété « IsAppInstancePreserved », si elle est à TRUE :pas de Tombstone, FALSE sinon.
Pour résumer :

- Quand « Desactivated » : Sauvegarde de l’état (comme maintenant)
- Quand « Activated » : On restaure l’état si on est en Tombstone et on ré-attache les ressources si nécessaire

D’autres informations ont été données, comme le fait que, dans Mango, on pourra faire tourner du code en background même avec l’écran locké ou si le téléphone est en veille. Par contre, pas possible d’exécuter du code sur un Launcher / Chooser.

Building Browser Experiences with Silverlight 5 - MED10

Dans cette session, il a été question de lister les grandes nouveautés de Silverlight 5, voici les plus importantes :

- Implicit Data Template : Il est maintenant possible comme dans WPF, de définir un template par défaut pour un type de données particulier (un ViewModel par exemple) et de le placer en ressource statique, sans Key, ce style sera appliqué à tous les rendus du type donné qui lui seront associés. Par exemple dans une ListBox ou une ComboBox
- FindAncestror : Il est maintenant possible comme dans WPF, d’écrire une expression de binding qui va chercher sa source dans l’arbre Visuel parent
- Debugging XAML : Il est maintenant possible de placer des points d’arrêts sur des expressions de Binding dans le XAML. Une fois le point d’arrêt atteint, il est possible de voir le contexte courant, ainsi que beaucoup d’informations utiles
- Markup Extension : On peut désormais créer nos propres expressions pour XAML. Dans la session, une démo montrait comment on peut créer une extension « Method » qui permet, sur un événement, de binder une méthode du contexte. C’est très intéressant, car dans cet exemple cela permet de binder une méthode du ViewModel sur un event, et ainsi se passer d’une commande.
- DataContextChanged : Il y a maintenant un événement qui couvre le changement du DataContext en proposant au moment du callback, l’ancienne et la nouvelle valeur du DataContext, pratique s’il y a des traitements à faire avec l’ancienne source
- UpdateSourceTrigger : Un nouveau mot clé XAML qui permet sur un Binding de définir de quelle façon la source informe de son changement de valeur, cela permet de filtrer des notifications parasites
- Vector printing : Une nouvelle façon de rendre les textes et de les transmettre à l’imprimante, cela réduit de plus de 60% le volume de donnée à transférer à l’imprimante et accélère l’impression
- Trick Play : Maintenant quand un lecteur fait de l’avance ou du retour rapide sur une vidéo par exemple, c’est plus fluide et le son ne se coupe pas, ça fait comme si on accélérait une vidéo sur VHS :D
- RitchTextBoxFlow : Plusieurs contrôles en nom avec « Flow » permettent de rendre du texte qui s’adapte à une zone de rendu. On définit une zone rectangle (la taille du contrôle) et le texte grossi, réduit et se repositionne si ce rectangle change
- WCF RIA Services SP2 : Annonce de sa disponibilité avec la Beta de Silverlight 5, ils ont amélioré le passage de types complexes (enfin !) et c’est à peu près tout, ils ne se sont pas éternisés sur le sujet
- Binding in Style Setter : Tous est dans le titre on peut maintenant faire des expressions de Binding dans une Setter (Value) d’un Style

Voilà ce qui a été dit pendant cette session. Il y a d’autres éléments comme les API 3D notamment, donc je vous invite à télécharger Silverlight 5 Beta et à la tester.

Multitasking in the next version of Windows Phone - DVC18

Session très intéressante sur l’implémentation du Multitâche dans Mango. J’ai trouvé que cette implémentation était très intelligente, avec derrière tout ça, une philosophie.
On nous parle de « Windows Phone Harmony », à savoir le fait de créer des applications qui respectent à la fois l’expérience utilisateur mais aussi le téléphone à travers sa durée de vie avec la batterie.
Forcément quand on parle de multitâches on n’est pas à l’abri d’abus ou d’applications mal conçues qui vident la batterie. Avant de revenir sur ce point, voyons ce qu’apporte Mango en terme de Multitâches :

- Possibilité de switcher d’une application à l’autre (grâce entre autre au système de snapshot introduit dans Mango), à l’instar de l’iPhone on peut aller d’une application à l’autre en un clic
- Introduction du « Background Notification Service » qui permet de créer des événements de rappel dans le téléphone
- Introduction du « Backgound Transer Service » qui permet de télécharger des données en background et d’être notifié de son avancement et de sa fin
- Introduction du « Background Audio » qui permet de faire jouer du son même avec l’application fermée
- Introduction des « Background Agent », des services qui s’exécutent en tâche de fond et qui sont créés par les développeurs

En ce qui concerne les « Background Agent », quand on lance son application et que l’on active un agent, celui-ci sera vivant pendant 14 jours si l’utilisateur ne relance pas l’application. Si l’application n’est pas lancée d’ici 14 jours, WP7 désactive automatiquement l’agent. De plus, il existe une interface dans les paramètres qui liste tous les agents installés dans le téléphone et il est possible à l’utilisateur de les désactiver manuellement.
Avec cette politique, les agents sont contrôlés intelligemment, soit par WP7 qui désactive ceux qui ne servent plus, ou par l’utilisateur s’il estime que cet agent n’a pas lieu de persister. Je trouve que c’est une façon très intelligente d’intégrer le multitâche et qui responsabilise le programmeur sur ce qu’il fait.

Enhanced Push Notification and live Tiles for WP7 - DVC08

Dans cette session on est revenu sur les possibilités que Mango nous offre pour modifier les Tiles. Actuellement, on peut seulement modifier l’image, le titre et changer le compteur et ce uniquement par un message Push.
Aujourd’hui, Mango nous permet de le faire sans Push avec une nouvelle API locale, mais ajoute aussi une face verso au Tile. Si les deux faces du Tile sont définies, il va se retourner à intervalle régulier. Ça permet d’avoir plus d’informations sur un seul Tile.
Autre nouveauté, c’est le Deep Dive (ou Deep Toast) qui permet lorsque l’on clique sur un Toast Message ou un Tile, de naviguer vers une page particulière de son application. Cette fonctionnalité sera utile avec l’ajout de la possibilité de mettre plusieurs Tiles pour une même application. Par exemple, sur une application d’informations type BBC, on peut avoir le Tile pour lancer l’application et un autre pour la lancer et se positionner directement sur la page « information locale ». Ce mécanisme marche aussi pour les Toast Messages.
Le problème du Deep Dive c’est que la page de navigation devient la page d’accueil de l’application, or si cette page nécessite un Back par le bouton physique pour retourner à la vraie page d’accueil de l’application, elle la fera quitter. Cela demande donc une adaptation de notre code pour justement couvrir ce besoin.
Globalement, une plus grande liberté est donnée sur les Tiles et c’est une très bonne chose.

What's new for WP7 with XNA - DVC16

Il nous a été présenté dans cette session la nouvelle fonctionnalité de Mango qui permet de mettre du XNA dans une application Silverlight. J’avoue avoir été vraiment impressionné par cette fonctionnalité. L’intégration est extrêmement bien faite et ouvre des possibilités énormes.
Dans les faits, il suffit de créer une application Silverlight et sur une page mettre « SetSharedMode(true) » pour que la page passe en contexte XNA. A ce moment, on a bien un contexte XNA avec toutes les possibilités que ça offre.
Pour gérer les boucles « Update » et « Draw », il suffit d’instancier la classe « GameTimer » et de se brancher sur les deux événements en question. A ce moment, dans la callback on a accès au GraphicDevice du contexte XNA et on l’utilise normalement (SpriteBatch, etc.).
Ce qui est encore plus fort, c’est qu’il est possible de rendre une interface XAML dans ce contexte XNA. Pour cela, instancier la classe « UIElementRenderer » en lui passant le contrôle de l’arbre Visuel à partir duquel vous voulez rendre l’interface. A ce moment il vous donnera une « Texture2D » que l’on pourra utiliser dans notre contexte XNA.
Ce qui est encore plus énorme, c’est que les événements sont quand même récupérés pour l’interface Silverlight, à savoir que le bouton continue à lever le clic, les textbox à afficher le clavier virtuel, etc. Donc notre interface est rendue en XNA mais continue à fonctionner, on peut même utiliser des Storyboards sur des éléments XNA comme une caméra, des couleurs de texture. C’est réellement impressionnant.

MIX 2011 - De retour !

by Nicolas Calvi 18. avril 2011 19:08

Je reviens du MIX 2011 ou j'ai eu l'honneur de participer à une session sur les interfaces naturelles avec mes homologues MVP Surface. Pour voir cette session cliquez en dessous :

http://channel9.msdn.com/events/MIX/MIX11/OPN09

Je vous conseil aussi de regarder la session sur Surface V2 par Luis Cabrera :

http://channel9.msdn.com/Events/MIX/MIX11/dvc07

Bon visionnage :)