Pierre's Embedded and Mobile Blog

Soulevons le capot des systèmes embarqués et mobiles

Posts
  • Pierre's Embedded and Mobile Blog

    SDK Windows Phone 7 “Mango”: Les webcasts de l’après-midi du développement sont disponibles

    • 2 Comments

    Les slides et les samples codes avait déjà été mis en ligne il y a quelques jours, voici maintenant les webcasts de l’après-midi du développement sur le SDK Windows Phone 7 "Mango"

    On y retrouve notamment les performances de David et Luc (et moi Tire la langue) pour traiter toutes les grandes parties du SDK :

    1. Introduction
    2. Les nouveautés dans les outils de développement
    3. Le multi-tâches
    4. Live Tiles
    5. Intégration Silverlight + XNA
    6. Accès aux contacts, au calendrier, Launchers & Choosers
    7. Capteurs et Accès à la Caméra
    8. Intégration dans la recherche
    9. Base de données locale
    10. Réseau et Sockets
    11. Les nouveautés de Marketplace

    Vous pouvez également télécharger les vidéos, si vous voulez les regarder chez vous!

  • Pierre's Embedded and Mobile Blog

    Une série de vidéos Supinfo pour vous expliquer comment concevoir une application Windows Phone 7 connectée au cloud

    • 0 Comments

    Belle initiative de supinfo a lancé sa webtv cette année, les rendez-vous des experts, et qui nous propose une petite série de webcasts sur le développement d’une application Windows Phone 7, avec un backend dans Azure, utilisant WCF, Entity Framework et SQL Azure, avec quelques soupçons de T4 dedans !

    Partie 1: le DAL avec Entity Framework et la base Azure

    Partie 2 – Avec Mathieu Mezil et Julien Dollon, pour la couche Entities et un peu de T4!

    Partie 3 – Julien Dollon sur WCF, l’hébergement dans Azure et Thomas Laurent pour l’application WP7

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Mango SDK Beta 2: nouveaux launchers & choosers!

    • 0 Comments

    La première beta du SDK Mango amenait les launchers Bing Maps (BingMapsTask et BingMapsDirectionsTask), et les choosers d’adresse postale (AddressChooserTask) et invitation de jeu (GameInviteTask, pour les jeux XBox Live)

    La beta 2 amène les launchers ShareLinkTask et ShareStatusTask et les choosers SaveRingtoneTask et SaveContactTask. Les applications vont donc devenir plus sociales, vous permettre de customiser les sonneries, et gagnent (enfin!) un accès en écriture à la base des contacts!

    ShareLinkTask : Partager un lien sur les réseaux sociaux configurés

    private void btnShareLinkTask_Click(object sender, RoutedEventArgs e)
    {
        ShareLinkTask slt = new ShareLinkTask();
        slt.LinkUri = new Uri("http://blogs.msdn.com/pierreca");
        slt.Message = "you should read it!";
        slt.Title = "Interesting blog!";
                
        slt.Show();
    }
    
    ShareStatusTask : Changer de statut sur les réseaux sociaux
    private void btnShareStatusTask_Click(object sender, RoutedEventArgs e)
    {
        ShareStatusTask sst = new ShareStatusTask();
        sst.Status = "Testing new Mango APIs!";
                
        sst.Show();
    }
    SaveRingtoneTask : Sauvegarder une sonnerie (et éventuellement configurer le téléphone pour l’utiliser)
    private void btnSaveRingtoneTask_Click(object sender, RoutedEventArgs e)
    {
        SaveRingtoneTask srt = new SaveRingtoneTask();
        srt.DisplayName = "Ma super sonnerie";
        srt.IsShareable = true;
        srt.Source = new Uri("isostore:/ringtone.mp3");
        srt.Completed += new EventHandler<TaskEventArgs>(srt_Completed);
        srt.Show();
    }
    
    void srt_Completed(object sender, TaskEventArgs e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            MessageBox.Show("Ringtone saved!");
        }
    }
    SaveContactTask : Sauvegarder un contact dans le téléphone (sur n’importe quel compte)
    private void btnSaveContactTask_Click(object sender, RoutedEventArgs e)
    {
        SaveContactTask sct = new SaveContactTask();
        sct.Company = "Microsoft";
        sct.FirstName = "Pierre";
        sct.LastName = "Cauchois";
        sct.MobilePhone = "+33666666666";
        sct.Website = "http://blogs.msdn.com/pierreca";
        sct.Completed += new EventHandler<SaveContactResult>(sct_Completed);
                
        sct.Show();
    
    }
    
    void sct_Completed(object sender, SaveContactResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            MessageBox.Show("Contact saved!");
        }
    }
    
  • Pierre's Embedded and Mobile Blog

    Développeurs d’applications mobiles, offrez-vous de la visibilité sur Developpez.com

    • 0 Comments

    Developpez.com ouvre une nouvelle section dans son forum pour mettre en valeur vos applications pour mobiles. Profitez en pour faire votre pub, et récolter du feedback !

    La news sur le site développez.com

  • Pierre's Embedded and Mobile Blog

    Stage de Robotique à Bordeaux, chez Génération Robot!

    • 1 Comments

    Le marché des entreprises robotique n’est pas grand, il est parfois difficile de trouver un stage pour les passionnés: c’est pourquoi je me permet de relayer, à travers le site du labo robotique de supinfo, cette annonce de Génération Robots, qui cherche 2 stagiaires pour cet été.

    Ne vous y trompez pas, sous une vitrine de site de distribution de robots, Génération Robots à également une activité R&D leadé par Yassine Serhrouchni, un ancien de chez Wany Robotics, activité dont j’ai eu l’occasion de parler avec lui et qui promet d’être passionnante

  • Pierre's Embedded and Mobile Blog

    Un concours Intel pour les développeurs embarqués

    • 0 Comments

    Intel semble vouloir accélérer le développement d’applications embarquées avec leur processeurs Atom en s’associant au prestigieux Fraunhofer Institute pour offrir jusqu’à 17500 euros aux développeurs innovants qui utilisent leurs solutions. Etudiants Imagine-Cup de la catégorie embarqué, vous tombez pile dans la cible, c’est une belle opportunité!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Développeurs Android ceci est pour vous!

    • 1 Comments

    L’équipe Interop de Microsoft vient de produire un Android API Mapping Tool, sur le même principe que l’iPhone API Mapping Tool, qui permet à partir d’une cartographie des API (Android ou iOS donc) de retrouver l’équivalent en Windows Phone 7.

    Par ailleurs en plus l’équipe fournit un guide Windows Phone 7 à l’attention des développeurs Android (sur le même principe encore une fois que la version iPhone.

    Sur le site d’interop Windows Phone 7 vous retrouverez en plus de ces documents et ces outils des vidéos de développeurs qui racontent leur expérience de portage de leur application vers Windows Phone 7.

    Happy porting!

  • Pierre's Embedded and Mobile Blog

    [Mango] Les slides et les démos de l’après-midi du dev

    • 0 Comments

    Comme d’habitude, nous publions les ressources de cet après-midi du dev autour de Mango, la future version de Windows Phone 7. Nous avons posté les slides et les démos sur le skydrive ci-dessous.

    Vous y retrouverez toutes les infos, et sachez que par ailleurs David a fait un post spécifique sur sa partie

    Les blogs des autres intervenants:

    Happy Mango-ing!

  • Pierre's Embedded and Mobile Blog

    Envie de comprendre comment on construit un OS embarqué?

    • 0 Comments

    Une série de webcasts (en anglais) a été publiée par le groupe Windows Embedded pour comprendre comment on fabrique son propre OS à partir des briques de Windows Embedded Compact 7… pour ceux qui vont se demander… oui oui, c’est bien un des outils ce qui sert à fabriquer… l’OS de Windows Phone 7…

    Attention c’est un peu technique !

    Les webcasts Windows Embedded sur Showcase

  • Pierre's Embedded and Mobile Blog

    Mise à jour du Windows Azure toolkit for Windows Phone 7: profitez du One-Month Pass pour l’essayer !

    • 0 Comments

    Un mois seulement après la sortie de la première version, voilà que la nouvelle version du kit de développement Windows Azure Toolkit for Windows Phone 7 a été mise à jour.  Ce SDK rappelons le inclus dans un seul template de projet les roles azure et l’application Windows Phone préconfigurées pour communiquer entre eux (storage accounts, etc). Les nouveautés de cette version 1.2 incluent le support de Windows Azure Access Control Service, un support total des Queues et un frontal web revampé.

    Pour le tester, n’hésitez pas à utiliser l’offre “One Month Pass” qui permet de bénéficier, pendant 1 mois et sans même rentrer son numéro de carte bleue, de 3 instances Azure, 10Go de stockage, 2 bases de données SQL AZure et 10Go de transferts entrants et sortants… bref, de quoi s’amuser Sourire Les liens utiles ci dessous:

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] la CTP Async par l’exemple: ça apporte quoi?

    • 2 Comments

    Lors du MIX11 il a été annoncé que la nouvelle CTP Async de Visual Studio supportait Windows Phone 7. Async est un framework qui apporte quelques éléments qui simplifient grandement la programmation asynchrone. Or comme on le sait quand on y a un peu touché, la très grande majorité des API du SDK Windows Phone sont asynchrones. Le problème du code asynchrone est qu’il est en général assez moche à regarder: ce n’est pas vraiment lisible, on passe en permanence d’une méthode à une autre, en induisant souvent des confusions et des problèmes d’accès entre threads, des delegate et des méthodes anonyme de partout, ça devient vite un gros plat de spaghetti.

    Sans en faire un tour complet un peu long, il suffit de s’intéresser aux deux mots clefs apportés par cette CTP Async pour en comprendre la génialitude: async, et await. Ces deux mots clefs permettent d’écrire de façon séquentielle un code asynchrone. Pour faire un exemple simple, nous allons prendre pour exemple un simple appel à un WebClient pour le classique client Twitter qui semble avoir remplacé ce bon vieux Hello World…

    Normalement, voila comment on écrit un appel à WebClient: on l’instancie, on s’abonne à l’évènement de complétion du téléchargement, et ensuite on lance le téléchargement. Le code qui est associé à l’event handler de complétion s’exécutera quand le téléchargement sera fini, et donc ça ressemble à ça:

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        WebClient wc = new WebClient();
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        wc.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=pierreca"));
    }
    
    void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        listBox1.ItemsSource = from tweet in XElement.Parse(e.Result).Descendants("status")
                                select new Tweet()
                                {
                                    PictureUrl = tweet.Element("user").Element("profile_image_url").Value.ToString(),
                                    Text = tweet.Element("text").Value.ToString(),
                                    UserName = tweet.Element("user").Element("screen_name").Value.ToString()
                                };
    }

    Maintenant avec la CTP Async on peut utiliser les mots clefs async et await pour tout écrire d’un seul bloc linéaire. D’abord on commence par signaler qu’une méthode va contenir du code asynchrone en la préfixant du mot clef async. Ensuite dans le corps de la méthode on utilise le mot clef await pour signaler que tout ce qui suivra l’appel préfixé de await sera exécuté au retour de cet appel… comme si le code était bloquant, sauf qu’il ne l’est pas Sourire Le bout de code suivant est donc équivalent au précédent:

    private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        WebClient wc = new WebClient();
        var items = await wc.DownloadStringTaskAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=pierreca"));
    
        listBox1.ItemsSource = from tweet in XElement.Parse(items).Descendants("status")
                                select new Tweet()
                                {
                                    PictureUrl = tweet.Element("user").Element("profile_image_url").Value.ToString(),
                                    Text = tweet.Element("text").Value.ToString(),
                                    UserName = tweet.Element("user").Element("screen_name").Value.ToString()
                                };
    }

    Beaucoup plus lisible à mon humble avis!

    Les plus observateurs d’entre vous auront remarqué un changement que je n’ai pas signalé… on appelle maintenant la méthode WebClient.DownloadStringTaskAsync plutôt que WebClient.DownloadStringAsync. C’est une méthode d’extension qui est amené par la CTP et qui est renvoie Task<string>.. au lieu de void! En effet, il faut bien pouvoir récupérer le résultat de cet appel à await… qui va générer une Task dont le résultat est une chaine de caractères… l’utilisation de async et await n’est donc pas complètement transparente dans votre code: il faudra également modifier un peu vos prototypes de méthodes mais c’est le prix à payer pour bénéficier de l’élégance de ces nouveaux mots clefs!

    Maintenant que vous êtes convaincus que cette CTP est géniale, sachez que vous pouvez la télécharger ici. Attention à bien prendre la version “Refresh” pour être compatible avec le SP1 de Visual Studio Sourire Ensuite dans vos projets, n’oubliez pas de référencer l’assembly AsyncCtpLibrary_Phone.dll qui se trouve dans votre dossier documents, dans \Microsoft Visual Studio Async CTP\Samples.

    Quid de Rx?

    Rx et Async sont bien deux frameworks permettant d’écrire élégamment du code asynchrone, mais ils ne sont pas du tout voués aux même usages. Rx implémente le pattern duale de l’IEnumerable à savoir l’IObservable : au lieu d’itérer activement dans une collection, on s’abonne aux ajouts d’éléments dans cette collection. Rx permet donc de gérer des suites d’évènements et avec une syntaxe fonctionnelle commence même à ressembler à une espèce de “Linq to Events”. L’utilité de Rx est donc dans la gestion de scénarii asynchrones complexes impliquant par exemple plusieurs sources d’évènements, le besoin de gérer l’élément temps, etc. La CTP async a un but beaucoup plus modeste: tout simplement simplifier l’écriture du code et en améliorer la lisibilité.

  • Pierre's Embedded and Mobile Blog

    Après-Midi du développement XNA le 13 Mai au Campus Microsoft

    • 0 Comments

    Venez nous retrouver l’après-midi du 13 Mai sur le campus Microsoft à Issy-les-Moulineaux, pour un après-midi du développement sur XNA! Après Windows Phone 7, la Programmation Asynchrone, Entity Framework (publication des webcasts sous très peu), découvrez les bases du développement 3D et de jeu, sur PC, Xbox360 et Windows Phone 7:

    XNA dans tous ses états : La 3D à portée de code

    Tout au long de cet après-midi nous allons découvrir à la fois les bases et les notions de la 3D accélérée puis nous verrons la mise en œuvre de ces concepts en utilisant la technologie XNA sur un large éventail de plateformes : PC, Silverlight 5, Windows Phone 7 et Xbox. C’est XNA everywhere !

    Les speakers :

    • David CATUHE
    • Valentin BILLOTTE
    • Simon FERQUEL

    Date : 13 mai 2011, 14h-18h

    Lieu : Campus Microsoft
    41 Quai du Président Roosevelt - Centre de conférences Microsoft Issy-les-Moulineaux, France

      

    Vu ce qui arrive dans le futur SDK Mango de Windows Phone 7 je vous conseille fortement de vous mettre un peu à la 3D… Smile

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Un site sur l'interopérabilité et à destination des développeurs des plateformes concurrentes

    • 0 Comments

    Une ressource de plus intéressante à suivre, un site dédié à l’interopérabilité avec Windows Phone 7… Le mot “interopérabilité” étant à prendre avec des pincettes, car il ne s’agit pas ici d’ouverture de spécifications de l’OS, mais plutôt des manières de profiter, pour les développeurs Android, iPhone, etc, du travail qu’ils ont fait sur leurs plateformes de prédilection pour en profiter lors du portage de leur(s) applications(s) sur Windows Phone 7. On y retrouve notamment l’excellent tutorial de Jesse Liberty (le Windows Phone 7 Guide for iPhone Application Developers) et on verra très vraisemblablement du contenu similaire sur Android arriver. Gageons qu’il y aura aussi très vite du contenu HTML5 étant donné que la future version d’Internet Explorer 9 pour Windows Phone 7 devrait en avoir un support exemplaire…

    Un article très détaillé sur le sujet, sur le blog officiel de l’équipe de dev Windows Phone 7

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Les sessions du MIX sur le SDK Mango

    • 0 Comments

    En attendant ce SDK Mango qui devrait arriver courant Mai, il est possible de s’y préparer en découvrant ou en revoyant les webcasts des sessions du MIX sur le sujet:

    Il y avait aussi pas mal de choses intéressantes dans les autres sessions autour de Windows Phone (indépendamment de Mango):

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Toutes les nouveautés du SDK de Mango expliquées!

    • 8 Comments

    La future mise à jour de Windows Phone 7, nom de code « Mango », va apporter son lot de nouveautés en termes de fonctionnalités, et pour supporter ça, le SDK s’enrichit considérablement  : au programme, plus de 1500 nouvelles APIs, et pour commencer, le support de Silverlight 4 !! On va pouvoir profiter du multitasking, une base de données locale, des sockets, des nouvelles API pour les capteurs, plus de souplesse sur la gestion des tuiles et des notifications en push, l’intégration de Silverlight et XNA, de la réalité augmentée, l’accès aux contacts et au calendrier… et j’en passe.

    Le multitasking

    Le multitasking était interdit pour les applications tierces dans la première version du SDK, mais avec Mango il y a maintenant des scénarios spécifiques dans lesquels il sera possible de faire tourner du code en background.

    Un autre avantage avec le multitasking est la possibilité de revenir à une application sans temps de chargement. En fait par défaut avec Mango, l’application sera désactivée mais sa mémoire ne sera pas libérée : on dira que l’application sera « dormante ». La mémoire ne seralibérée que si c’est nécessaire, sachant qu’on peut avoir jusqu’à 5 applications dormantes en même temps. En revanche, il est possible qu’à un certain point, l’application soit tombstonée, c’est pouquoi quoi qu’il arrive il faudra faire de la sauvegarde de contexte. En revanche, au chargement, on pourra tester avec une simple API à tester si l’application est dormante ou tombstonée.

    En plus de « fast app switching », les API de multitasking introduisent 3 concepts :

    • Les services
    • Les agents
    • Le background processing « générique »

    Nous allons détailler ces 3 cas de multitasking dans les sous-parties suivantes.

    Les services

    Il devient avec Mango possible de piloter des services du système avec des API : par exemple, des alarmes (comme le réveil), et des reminders (comme ceux du calendrier). Un autre service accessible est la lecture audio en background (par exemple pour les applications radios) qui permettra d’utiliser l’API MediaStreamSource qui permet de customiser le pipeline audio (ce qui inclut la potentielle gestion des DRM ou des protocoles spéciaux). Le dernier service est le transfert de données en background qui permettra de télécharger des données même quand l’application sera dormante ou tombstonée. L’avantage de ce service est qu’il persiste même malgré un redémarrage du téléphone!

    Les agents

    Les agents permettent de faire tourner du code en background, dans un processus différent de l’application.

    On peut faire à peu près tout dans les agents : accéder au réseau, au GPS, mettre à jour les tuiles dynamiques, etc. En revanche évidemment on ne peut pas manipuler d’interfaces graphiques, ni le micro ou la camera.

    Les agents permettent d’ouvrir un certain nombre de scénarios comme la synchro de donnée, le tracking, la localisation sociale, etc.

    Le background processing générique

    Quand l’application ne tourne pas au premier plan (foreground) l’agent devra adopter l’un des deux types suivants :

    - Périodique : Exécute du code pendant 15 secondes toutes les 30 minutes

    - En mode inactif : quand le téléphone est branché sur le secteur, et sur une connexion qui n’est pas cellulaire.

    Les sockets

    Dans la première version du SDK le développeur ne disposait que des canaux http et https pour communiquer entre le téléphone et le cloud. Il sera maintenant possible d’utiliser des sockets, en TCP et en UDP, en Unicast et en multicast. Cette implémentation des sockets est donc elle-même plus riche que celle de Silverlight 4 !! Sur scène Jaime Rodriguez et Scott Guthrie ont démontré un client IRC qui, grâce à une librairie opensource déjà existante, aurait été codée (en tous cas c’est ce que veux la légende) en moins d’une heure ! Mais ce n’est pas la seule chose qu’on aura vu… car Joe Belfiore aura également annoncé Skype…

    Les tuiles et les notifications en push

    Avec la première version du SDK il y avait 2 moyens de manipuler les tuiles : avec des notifications en push, ou à intervalles réguliers avec l’API ShellTileScheduler. Et on avait 3 différents « champs » : le texte, un compteur, et l’image.
    Le SDK Mango introduit un nouveau modèle de programmation des tuiles, le modèle « local » qui permet d’éditer une tuile depuis l’application si elle est en foreground, ou depuis un background agent.

    Une autre nouveauté est de pouvoir avoir plusieurs tuiles par application : depuis l’application on pourra choisir d’afficher différentes tuiles, manipulables individuellement, et qui pourraient mener vers différentes parties de l’application.

    Dernière chose, il sera maintenant possible d’accéder aux deux faces de la tuile pour l’animer sur l’écran d’accueil et fournir plus d’infos aux utilisateurs !

    Les performances ont été grandement améliorées, à la fois entre le serveur et le téléphone, et à l’intérieur du téléphone. Et pour ceux qui se posent la question : non ce n’est pas du polling, oui c’est bien du Push.

    Enfin, la charge « embarquable » dans une notification passe de 1Ko à 4Ko, et le nombre maximal d’applications pouvant utiliser les notifications en push sur un terminal passe de 15 à 50.

    En ce qui concerne les toasts, il va maintenant être possible de « paramétrer » la notification afin de naviguer directement vers un endroit spécifique de l’application si on clique sur le toast.

    Des API d’accès à plus de ressources du téléphone : capteurs, contacts, calendrier…

    En premier lieu, de nouveaux launchers et choosers permettront d’accéder aux contacts, au calendrier, aux adresses des utilisateurs et de lancer l’application Bing Maps y compris pour des itinéraires. Il sera possible de manipuler des « alarmes » et des « reminders » pour enrichir l’expérience de votre application quand elle n’est pas lancée, et s’intégrer encore mieux dans le système. Mais ce n’est pas tout : il y aura également accès à plus de capteurs : la boussole, et même un gyroscope optionnel ! Non seulement aura-t-on accès à ces capteurs, mais aussi à un framework qui permettra de les manipuler et d’en intégrer facilement les données dans l’application. Enfin et ce n’est pas la moindre des nouveautés, les développeurs auront un accès direct à la caméra ! Les exemples de la keynote du MIX tournaient autour du scan de code-barres, mais aussi de la réalité augmentée! Dernier détail… il sera aussi possible de manipuler… les sonneries !

    L’intégration de Silverlight et XNA

    Dans la première version du SDK il fallait choisir entre une application XNA et une application Silverlight, avec Mango, on peut utiliser les deux dans la même application ! Non seulement il sera possible d’ouvrir, depuis une application Silverlight, une « page » qui utilise la game loop et le rendering XNA, mais il sera également possible de superposer des contrôles Silverlight au-dessus d’une scène XNA, et bien entendu, d’avoir des interactions entre les deux ! Je ne sais pas pour vous, mais moi quand je pense à ça et en même temps l’accès direct à la caméra, j’ai une grosse envie de réalité augmentée !

    Pour le fun, ce qui n’ont pas vu la keynote de MIX, vous pourrez la retrouver après l’évènement, vous devriez sauter directement vers 1h25 pour voir la démo énorme de Scott Guthrie à propos du sujet.. une bonne barre de rire en perspective !

    L’amélioration des outils de développement

    Les outils étaient déjà particulièrement sympas avec la v1 du SDK, mais nous avons reçu quelques feedbacks à propos de la simulation de l’accéléromètre et du GPS : avec Mango, ça sera possible !! La nouvelle version des outils incluera des outils pour simuler l’accéléromètre et le GPS dans l’émulateur. Les développeurs auront donc accès à une fenêtre en plus dans l’émulateur qui représentera le terminal en 3D et permettra de le manipuler dans l’espace, et pour le GPS, à une carte qui permettra de simuler des évènements GPS (nouvelle localisation, mais également, un trajet !).

    Une autre grosse demande que nous avons pris en compte est la possibilité d’instrumenter son code pour faire de l’analyse de performances, et directement dans Visual Studio, on pourra lancer une analyse de performance sur les temps d’exécution et les allocations mémoire, lorsque l’application tourne.

    La base de données locale

    Il est des applications qui ont besoin de manipuler de grandes quantités de données : que ce soit des applications avec des structures de données complexes (ce qui est le cas de beaucoup d’applications métiers), ou bien tout simplement avec de grandes quantités de données comme par exemple, une application dictionnaire. Dans ces cas, l’isolated storage, et le stockage de fichiers « à plat » n’est pas une option idéale. C’est pourquoi avec Mango nous rajoutons une base de données locale, et la possibilité d’interagir avec cette base de données avec des requêtes LINQ ! Les scénarios de requêtages vont bien sur être beaucoup plus performant et comme le démontrait Jaime Rodriguez sur scène à la keynote, l’implémentation par exemple de fonctions de recherches sera beaucoup plus simple !! Les fondations de cette base de données et de ce système de requêtage sont bien entendu SQL CE et ADO.NET.

    Il sera possible d’adopter une approche « code first » dans laquelle on créera les objets en code, qu’on « décorera » avec des attributs particuliers qui transformeront le modèle objet en une base de données, avec quelques API simples pour manipuler cette base à la main si besoin.

    Internet Explorer 9

    Le nouveau navigateur du téléphone intègre le support de HTML5, et même l’accélération hardware. Bonne nouvelle le contrôle WebBrowser d’une application Windows Phone se comportera de la même manière. Nous allons pousser les gens a utiliser les spécifications stables d’HTML5, et le navigateur intégrera le support de la geolocalisation par exemple. Comme avec Internet Explorer sur le PC la démarche de Microsoft est de supporter les standards stables qui garantissent l’expérience « same markup » pour tous les terminaux possibles et imaginables.

  • Pierre's Embedded and Mobile Blog

    [MIX11] Ce qui arrive à Vegas, n'y reste pas nécessairement :)

    • 1 Comments

    See You at MIX11le MIX11 commence demain à Las Vegas, et on y attend un paquet d'annonces... dont on ne pourrait pas encore parler aujourd'hui, mais qui devrait tout de même éveiller votre attention…

    Déjà les speakers des keynotes: Dean Hachamovitch, qui est Corporate Vice President pour Internet Explorer…. et puis Scott Guthrie, qui dirige la division .NET (dont fait partie Silverlight) et enfin, Joe Belfiore, qui est responsable du design et de la définition de Windows Phone… Ces speakers nous donnent une bonne idée de ce qui va être traité Smile

    Et puis l’agenda est intéressant aussi: sur les sessions Windows Phone, on voit qu’un gros paquet est déjà annoncé principalement pour le premier jour… mais la plupart des sessions du deuxième et du troisième jours n’ont pas de détails! elles sont “TBA” (To Be Announced) et comme par hasard… après la Keynote du deuxième jour, celle de Joe Belfiore!

    Malheureusement, tout le monde n’a pas la chance d’être à Las Vegas, mais les sessions du MIX seront disponibles en webcasts au fur et à mesure de l’évènement, et puis vous pouvez compter sur moi pour publier tout ce qu’on pourra dire, au moment ou on aura le droit de le dire!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Quelques ressources Azure pour les développeurs Windows Phone

    • 0 Comments

    Windows Azure et Windows Phone sont probablement les deux grandes priorités “développeurs” de Microsoft cette année, et il est intéressant de se pencher sur les scénarios d’utilisation du cloud dans des applications Windows Phone et vice-versa. De plus en plus de développeurs se penchent sur la question et on commence à voir émerger des ressources très intéressantes sur le web:

    • D’abord, la session Cloud your Windows Phone aux Techdays 2011 qui discute d’exemples et de scénarios Azure/WP7
    • Le projet Hawaii de Microsoft Research qui vise à fournir des outils comme de l’OCR, du Speech to Text, ou des systèmes de communications simples entre terminaux (Relay et Rendez-Vous) aux développeurs Windows Phone.
    • Le Windows Azure Toolkit for Windows Phone 7, qui est un toolkit de templates de projets permettant de développer à la fois les services azure et les applications Windows Phone 7, et une application sample avec un site ASP.NET MVC2 qui contient une partie administration (notamment du compte storage) et une application Windows Phone 7 qui s’y connecte.
  • Pierre's Embedded and Mobile Blog

    Retour sur Innorobo

    • 0 Comments

    Bluffant, enrichissant, enthousiasmant… Une semaine après Innorobo, j’ai des projets plein la tête, des contacts plein les poches, et une sérieuse envie d’y retourner l’an prochain, avec encore plus de place, de budget, de démos…

    Energie et maturité

    Ce qui frappe, quand on visite Innorobo, c’est l’énergie. Dans les stands, dans les allées, dans les conférences… tous les participants, quelque soit leur histoire et leur business, semblent habités par l’envie de faire décoller la robotique. Et quand on prend le temps de les écouter, on se rend compte que ça va probablement arriver assez vite, car cette énergie est canalisée par une maturité surprenante: fini le temps des barbus et des futurologistes (il y en avait aussi Winking smile, quand même, ils nous manqueraient sinon!)! Aujourd’hui le roboticien n’est plus tout seul, avec ses bras et sa vision un peu idéalisée : il a aussi une équipe, et un business-model. Et il a soif de partenariats, de contacts, de protos… En témoigne le catalogue Wany Robotics, avec déjà tout une gamme de robots noirs laqués assortis aux Kinect qu’Erwann Lavarec et son équipe (de charme) souhaite déployer, alors que le SDK officiel n’est même pas sorti! En témoigne aussi Jean-Christophe Baillie, patron de Gostai, qui édite Urbi, concurrent de Microsoft Robotics Developer Studio, avec qui nous avons passé en revue pendant bien 1/2 heure au calme toutes les choses à faire avec Microsoft, et leur robot de téléprésence, Jazz (stay tuned). Indubitablement, peu importe qui vient d’où ou qui fait quoi, les participants à Innorobo ont envie de travailler ensemble, et ça fait plaisir.

    P1010735Les labos et instituts de recherches bien représentés

    Impossible de parler d’Innorobo sans mentionner les labos, écoles et autres instituts de recherche: CEA, INRIA, INSA, INSERM, CRIIF, The Robot Studio… tous sont venu démontrer leur savoir et leur recherches… spéciale dédicace au Robot Studio, avec un robot ultra impressionnant, qui se base sur les compétences anthropologiques pour réaliser une mécanique répliquant le corps humain, et pilotable… avec Kinect!!

    La Corée à l’honneur

    Il y avait une allée particulière à Innorobo: celle de la Corée. Invitée d’honneur du salon, Dasarobot, Robotis, la KAR, le KAIST.. entreprises, instituts de recherche et associations avaient fait le déplacement. Il faut savoir que la Corée à une politique gouvernementale qui pousse énormément la robotique, à coups de subventions de recherche, d’entreprise et même… de parcs à thèmes! A ce ryhtme qui se compte en centaines de millions de dollars, la Corée risque vite de doubler le Japon et les Etats-Unis pour devenir la première nation dans la robotique dans le monde… Lors du cocktail VIP, les institutions coréennes telles que la Korean Association of Robotics (KAR, leur équivalent de notre Syrobo) et le prestigieux KAIST (Korean Advanced Institute of Science and Technology) ont eu des allocutions pas forcément simples (traduction oblige) mais porteuses de beaucoup d’espoirs d’ouverture et de collaboration.

    Les Kinects sont parmi nous. Cachés, mais ils sont là… et ils nous regardent!

    P1010723J’ai du passer bien 70% du salon sur mon stand à parler d’un seul sujet… Kinect. Je vais redire une bonne fois pour toute ce que j’ai martelé pendant tout le salon: LE SDK OFFICIEL ARRIVE!!. Et il est grand temps, car il semble bien que beaucoup n’aient pas attendu pour adopter la techno, avec des drivers non officiels, sous Linux ou sous Windows (et ce n’est pas un crime). Une caméra capable de donner une information de distance dans la 3ème dimension pour chaque pixel, les roboticiens en révaient, Microsoft l’a fait, et pour 150 euros Smile à mettre en perspective avec un LIDAR a peine plus précis mais qui coute déjà dix fois le prix… pour une information en 2D!

    Pas étonnant du coup de retrouver des Kinects à peine cachés sur les stands du CRIIF, de Wany, du Robot Studio… et bien en vue sur le stand Microsoft évidemment Winking smile

    Mais c’est quoi, le ROI d’un salon comme ça, pour Microsoft? D’ailleurs, pourquoi on y est?

    P1010717_croppedJ’y ai beaucoup eu le droit à la question… “Ha bon, Microsoft?? mais qu’est-ce que vous faites là??” De la sincère surprise à la question piège et bien orientée, rare sont ceux qui n’ont pas commencé l’approche du stand Microsoft avec cette question… La participation d’une entreprise à un salon a toujours plusieurs facettes: veille technologique, image, opportunités de partenariats, opportunités commerciales, démonstrations des technologies… Et la participation de Microsoft couvre tous ces aspects, avec des messages précis que les partenaires et les Microsoftee présents ont martelés tout au long des 3 jours:

    • Microsoft est un acteur historique de la robotique! Robotics Developer Studio est aujourd’hui à la pointe du développement d’applications robotiques, l’est depuis son lancement, et entend bien le rester. En témoigne l’adoption de cette technologie par Robosoft, Kuka, Siemens, Tyco, etc! Après tout, dès 2006, Bill Gates livrait sa vision “d’un robot dans chaque foyer”… c’était il y a 5 ans déjà!!
    • La technologie Microsoft permet de faire rentrer des robots dans des mondes que les roboticiens ne connaissent pas forcément! Quand il s’agit de construire, par exemple, un robot de téléprésence à destination des entreprises… Microsoft ne peut pas vous conseiller sur le choix des moteurs, ou de la caméra… par contre, quand il s’agit de comprendre comment l’infrastructure du système d’information de cette entreprise est fait, et comment s’y intégrer… ça fait un peu 20 ans qu’on fait ça. C’est pour ça que sur le stand Microsoft, il y avait un robot de téléprésence intégré à notre infrastructure de communication unifiées, Lync 2010 (qui sera détaillé sur ce blog à l’occasion d’un prochain post), mais aussi un robot utilisant notre Cloud, Windows Azure, pour déporter des fonctions de calcul et du contrôle d’accès avec système de fédération d’identité! Des domaines dans lesquels Microsoft est à la pointe et qu’il faudra que les roboticiens abordent s’ils veulent s’intégrer dans des infrastructures d’entreprise.
    • Enfin, dans une industrie bourgeonnante comme celle de la robotique, Microsoft est un partenaire de l’innovation et des startups, quelque soit la technologie choisie! Le programme Bizspark de Microsoft donne accès gratuitement à tous les produits Microsoft pour les startups de moins de 3 ans et de moins d’1 Million de chiffre d’affaire, qui développent un produit ou un service. Gostai, ou Robopec, par exemple, sont membres du programme Bizspark malgré leur choix entièrement Linux/URBI pour le système embarqué dans le robot!

    En conclusion de ce billet un peu long, je dirais qu’il me reste un an pour préparer la prochaine édition d’Innorobo, et que j’ai la ferme intention d’y revenir, avec encore plus de choses. Plus de Kinect, plus de robots, plus de partenaires… avec pas loin de 10 000 visiteurs pour une première édition, et autant d’opportunités, Innorobo est un succès dont l’équipe de Syrobo peut être fier, et c’est le nouveau rendez-vous incontournable pour quiconque veut mettre un pied dans ce domaine. Rendez-vous l’an prochain, pour Innorobo 2!!

  • Pierre's Embedded and Mobile Blog

    Microsoft à Innorobo: robotique bien-sûr, mais aussi cloud, communications unifiées, NUI…

    • 0 Comments

    Innorobo, c’est le premier salon sur le thème de la robotique en Europe, à l’instar de l’IREX de Tokyo ou de Robobusiness de NYC… Aux manettes, Syrobo, le syndicat de la robotique de service, et cette première édition s’annonce plutôt bien: tout le petit monde de la robotique va se retrouver non seulement dans la zone d’exposition, mais aussi à la conférence parallèle, RoboLift.

    Il n’en fallait pas moins pour me motiver, trouver un peu de budget chez mes collègues de Bizspark et du marketing de la plateforme Azure, et offrir à Microsoft 18m² de stand… mais que va-t-on y trouver, sur ce stand?

    Des partenaires

    Nous avons la chance de pouvoir nous offrir un stand, ce qui n’est pas le cas de tous nos partenaires. Alors on les invite! Bienvenue à QuidMind, Wygwam/xBrainLab, Sensorit, OnePoint…et on oublie pas ceux qui ne peuvent être présent en personnes mais nous offrent des démos: Winwise, Wany Robotics

    Des démos

    Stand garanti 100% démos, 0% commerciaux! pas moins d’une douzaine de démonstrations, toutes en liens avec la robotique: intégration de Lync 2010 et Microsoft Robotics Developer Studio pour faire un robot de téléprésence au bureau, de nombreuses démonstrations d’utilisation des composants d’Azure (WebRole et VMRole, AppFabric), liés à Robotics Studio aussi, et aux technologies embarquées comme le .NET MicroFramework, toute la famille Windows Embedded… Avec au moins une demi-douzaine de robots: certains pour hobbyistes, voire carrément “fait main”, d’autres professionnels comme ceux de chez Wany Robotics, Robosoft, Samsung ou encore Parrot (et oui, on va faire voler des ArDrone!). Pas question de faire un stand autour de la robotique non plus sans montrer les différentes utilisations qu’on peut avoir d’une certaine caméra utilisée pour l’instant pour les jeux vidéos capable de détecter la distance de chaque pixels, et les gestes, voire, reconstituer le squelette de l’utilisateur, dont on ne pourrait dire le nom… heureusement les partenaires sont là pour en illustrer d’autres usages!

    Des microsoftees

    Venez rencontrer les responsables du programme Bizspark pour les startups, de la plateforme Azure en France, des relations avec les développeurs… Pour parler opportunités de développement, de partenariats, ou bien tout simplement, parler technologies!

    On se voit sur le stand!!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Petit outil utile : l'Isolated Storage File Explorer

    • 4 Comments

    La plupart des applications utilisent l’isolated storage pour stocker des préférences, des données, faire un cache, etc. Il est parfois difficile de “debugger” l’isolated storage: ne serait-ce que voir ce qu’il y a dedans, ou vérifier qu’une sauvegarde s’est effectuée correctement. En plus il faut pouvoir gérer l’évolution de l’isolated storage au fur et à mesure des updates de l’application, car il n’est effacé qu’à la désinstallation complète, pas pour une update. Un explorateur de fichier pourrait être bien utile… mais jusqu’à il y a peu ça n’existait pas… jusqu’à peu Smile

    Le projet Windows Phone 7 Isolated Storage File Explorer sur codeplex résoud cette problématique: il offre la possibilité de naviguer dans l’Isolated Storage d’un Windows Phone 7 ou d’un émulateur depuis un petit utilitaire Windows indépendant, ou même directement à l’intérieur de Visual Studio!

    La documentation explique le processus tout à fait simplement:

    D’abord, on ajoute la référence:

    IsolatedStorageFileExplorer

    Ensuite, on lance le service, par exemple à l’intérieur de l’event handler Application_Launching (dans App.xaml.cs)

    IsolatedStorageExplorer.Explorer.Start("localhost");

    Et après y’a plus qu’à utiliser le petit soft livré dans l’installer dont le raccourci est disponible dans le menu démarrer, ou bien dans le menu “other windows” de Visual Studio Smile

    209664     209663

    Développeurs, si vous utilisez cet utilitaire, n’oubliez pasd’enlever la référence et le code qui va avec dans votre application une fois le debuggage de l’Isolated Explorer fini, si vous ne voulez pas que vos utilisateurs explore votre espace de stockage!!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Barcamp sur Lyon le 22 Mars

    • 0 Comments

    Adénéo, partenaire mobile bien actif dans la sphère Windows Phone 7 notamment avec leur MVP mobile Fabien Décret, organise à Lyon le 22 Mars après-midi un Barcamp ouvert à tous dans les locaux de Microsoft. J’aurai le plaisir d’y participer!

    Flyer Barcamp_LR

    Le rendez-vous est pris, alors venez avec vos projets, vos idées, etc! inscrivez vous par mail à l’adresse indiquée ci dessus Smile

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Comment rendre une “zone touchable” autour d’un contrôle plus large que le contrôle lui-même

    • 0 Comments

    Il est dit dans les design guidelines de Metro qu’une zone tactile doit faire au minimum 7mm de coté, 9mm de préférence. Hors lorsqu’on dessine une interface tous les contrôles n’ont pas nécessairement cette taille, ce qui rend la manipulation au doigt difficile: l’utilisateur doit “viser” en quelque sorte. C’est une mauvaise expérience.

    Pour améliorer ça, il faut faire 2 choses: d’abord bien espacer les contrôles (un espace de 2mm entre chaque contrôle est recommandé), ensuite, augmenter la surface “touchable” de ces contrôles. Le problème est qu’augmenter la surface d’un contrôle risque de compromettrel’alignement de ce contrôle dans l’interface. Mais il suffit d’utiliser des marges négatives pour le réaligner Smile 

    Cette suggestion futée nous est proposée par Laurent Bugnion sur le blog de Galasoft, qui édite par ailleurs le toolkit MVVM Light et le behavior multitouch pour Windows Phone 7 dont nous reparlerons sous peu! Je vous invite à suivre son blog qui enrichira sans aucun doute votre feedreader de posts bien utiles!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Comprendre Metro, et en connaitre les ressources

    • 2 Comments

    J’ai eu la chance d’être invité en ce début de semaine au Microsoft Innovation Center (celui de Belgique, il n’y en a pas en France) pour animer une journée de workshop sur Metro, le langage de design de Windows Phone 7. Une journée sur les grands principes, la philosophie de Metro, mais aussi les outils et les méthodes pour appliquer et adapter Metro dans son application, ainsi qu’un tas de petits “trucs” pour aider à la réflexion lors de la conception de l’expérience utilisateur (Panorama ou Pivot? AppBar ou bouton? MVVM ou pas? etc), et des petites démos de base pour comprendre “dans le code” le fonctionnement des éléments de base de Metro (transitions, etc)

    Voici donc les ressources indispensables pour bien appréhender Metro:

    En plus de ça, pour autant que ce soit utile, mes slides :

    D’un point de vue plus technique, nous aurons parlé:

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Animations “Tilt” sur des contrôles, et transitions entre les pages

    • 3 Comments

    Metro, le langage de design de Windows Phone 7, encourage l’utilisation des animations et du mouvement  dans l’interface graphique. Utilisées avec parcimonie, animations  des contrôles et transitions de pages fournissent un feedback visuel à l’utilisateur sur ce qui se passe sur le téléphone : par exemple confirmer à l’utilisateur qu’il a tapé sur le bon élément d’une listbox en le faisant “tilter” (l’élément va légèrement pivoter sur lui-même, s’enfoncer en quelque sorte dans l’interface. Malheureusement le SDK Windows Phone 7 de base ne contient pas d’animations à réutiliser pour “imiter” le comportement natif. Et il n’est pas trivial de redévelopper ces animations. Heureusement, Le Silverlight Toolkit est là pour nous aider.

    Utiliser un Tilt Effect comme feedback visuel

    Pour gérer le feedback visuel de l’appui sur un contrôle de l’utilisateur, le “tilt” est l’animation la plus utilisée dans Metro. On trouve dans les sample codes Windows Phone 7 sur MSDN exactement cet effet, implémenté sous la forme d’un DependencyObject. Le code d’exemple est fourni sous la forme d’une solution qui montre comment se servir de cet effet. Il faut d’abord importer le fichier TiltEffect.cs dans notre propre solution:

    SolutionTiltEffect

    Ensuite il faut référencer son namespace,, directement dans le XAML:

    xmlns:local="clr-namespace:ControlTiltEffect"
    

    Enfin, il reste à utiliser la propriété TiltEffect.IsTiltEnabled pour activer ou désactiver cet effet sur tous les enfants du contrôle sur lequel on applique ce DependencyObject.  Par exemple l’appliquer aux éléments d’une ListBox:

    <ListBox local:TiltEffect.IsTiltEnabled="True">
    

    On peut aussi choisir de l’appliquer à une page entière (en utilisant cet attribut directement au niveau de la PhoneApplicationPage) puis choisir de “supprimer” ce TiltEffect sur certains éléments (comme par exemple les boutons, qui bénéficient en général d’autres mécanismes de feedback visuel. Dans ce cas là on peut utiliser l’attribut suivant:

    <Button local:TiltEffect.SuppressTilt="True" />

    Insérer des transitions entre les pages d’une application

    Les transitions sont utilisées pour rendre la navigation entre les pages plus naturelle et fluide. Le Silverlight Toolkit permet d’utiliser toute une bibliothèque de transition entre les pages, dont certaines imitent celles de l’interface native. On va ainsi retrouver les transitions suivantes:

    • roll et rotate qui sont plutôt des transitions pour passer des modes portraits à paysage et dont on peut régler le sens
    • slide qui permet de faire glisser la page vers n’importel quel coté, en entrée ou en sortie
    • swivel qui fait pivoter la page sur l’axe des X en entrée ou en sortie.
    • turnstile, qui rappelle une page qui se tourne, dans un sens ou dans l’autre

    L’intégration de ces transitions est extrêmement simple et en deux étapes: d’abord, il faut changer une ligne de code dans le fichier app.xaml.cs: plus précisément, dans la méthode InitializePhoneApplication, on instancie une PhoneApplicationFrame qu’on assigne à l’objet RootFrame. Pour utiliser les transitions du Silverlight Toolkit, il faut instancier une TransitionFrame à la place:

    RootFrame = new TransitionFrame();

    Ceci étant fait, il ne reste plus qu’à intégrer, en XAML, la transition souhaitée, page par page. Par exemple, pour des transitions de type Turnstile en entrée et sortie de page:

    <toolkit:TransitionService.NavigationInTransition>
        <toolkit:NavigationInTransition>
            <toolkit:NavigationInTransition.Backward>
                <toolkit:TurnstileTransition Mode="BackwardIn"/>
            </toolkit:NavigationInTransition.Backward>
            <toolkit:NavigationInTransition.Forward>
                <toolkit:TurnstileTransition Mode="ForwardIn"/>
            </toolkit:NavigationInTransition.Forward>
        </toolkit:NavigationInTransition>
    </toolkit:TransitionService.NavigationInTransition>
    <toolkit:TransitionService.NavigationOutTransition>
        <toolkit:NavigationOutTransition>
            <toolkit:NavigationOutTransition.Backward>
                <toolkit:TurnstileTransition Mode="BackwardOut"/>
            </toolkit:NavigationOutTransition.Backward>
            <toolkit:NavigationOutTransition.Forward>
                <toolkit:TurnstileTransition Mode="ForwardOut"/>
            </toolkit:NavigationOutTransition.Forward>
        </toolkit:NavigationOutTransition>
    </toolkit:TransitionService.NavigationOutTransition>
    

    Et c’est tout!

    Vous n’avez maintenant plus d’excuse pour intégrer les “mouvements” de base de Metro. Mais attention à ne pas en abuser: plus une animation est utilisée (voire sur-utilisée), plus elle perd de sa valeur dans l’interface!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Comment marche le capability detection tool?

    • 5 Comments

    Le capability detection tool est un petit utilitaire en ligne de commande qui va permettre de scanner votre application afin de détecter automatiquement, en fonction des API utilisées, quelles sont les “capabilities” à indiquer dans le manifest de votre application. Il est critique d’indiquer les bonnes capabilities dès le début car par défaut, elles sont toutes activées: ces capabilties sont d’ailleurs indiquées sur la page de votre application sur Marketplace et pourrait donc induire l’utilisateur en erreur sur ce que fait votre application réellement…

    Le capabiltiy detection tool se trouve dans le dossier C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect. il faut ouvrir un command prompt et appeler la ligne de commande suivante:

    CapabiltiyDetection.exe Rules.xml “CheminVersLeDossierDeVotreApplication”

    L’outil vous retournera alors directement dans la fenêtre de commande les capabilities à inclure dans votre manifest dans la section <capabilities> (le fichier WMAppManifest.xml se trouve en dépliant les Properties de votre application)

    WMAppManifest

    Comment marche cet outil? Il scanne en fait le code de votre application à la recherche des API qui nécessite certaines capabilities. Et les règles qui régissent cette détection sont justement indiquées dans le fichier Rules.xml qu’on spécifie dans la ligne de commande Smile Ce fichier est plutôt simple à comprendre: pour chaque capability, l’outil va chercher des namespaces, des classes ou des méthodes qui requièrent celle-ci.

    Par exemple:

    <Capability ID="ID_CAP_MICROPHONE" Type="Security">
            <Assembly Name="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553">
                <Namespace Name="Microsoft.Xna.Framework.Audio">
                    <Class Name="Microphone" />
                </Namespace>
            </Assembly>
    

    indique qu’on incluera la capability “ID_CAP_MICROPHONE” si on trouve une référence à l’assembly Microsoft.Xna.Framework, et qu’on utilise la classe Microphone définie dans le namespace “Microsoft.Xna.Framework.Audio”.

    Du coup si vous vous demandez pourquoi l’outil retourne une capability que vous ne croyez pas avoir besoin de spécifier: un petit coup d’oeil dans ce fichier Rules.xml pourra surement éclairer votre lanterne.

    Il arrive souvent par exemple que l’outil indique ID_CAP_NETWORKING alors que l’application ne fait pas forcément directement appel au réseau: mais le simple fait de spécifier une Uri locale dans du XAML (pour une image par exemple) peut faire que l’utilitaire détecte le besoin du réseau.. à tort. Laisser la clause using System.Net alors qu’on en a pas besoin provoque la même réaction… et cette clause est automatiquement ajoutée dans le template par défaut, il faut donc penser à bien nettoyer ses usings! Dans ce cas, vous pouvez enlever cette capability de votre manifest, mais attention tout de même à bien retester complètement votre application sans cette capability pour être sur que tout fonctionne quand même!!

Page 3 of 10 (240 items) 12345»