SlideShare une entreprise Scribd logo
1  sur  39
palais des
congrès
Paris




7, 8 et 9
février 2012
Vous êtes dans la salle 352A
Kinect + Office365 : Un
bon geste en faveur de
votre SI !
Mardi 7 février
Julien LO PRESTI
Samuel BLANCHARD
Fabrice BARBIN
Samuel BLANCHARD

   Au niveau communautaire
     Rédacteur/Modérateur chez
      Développez
     Rédacteur pour Programmez!
                                         A remplacer
                                         par une
     Fondateur Club SP et .NET Ouest
                                         photo
     Créateur d’applications Windows
      Phone
        Outil : isoStoreSpy

        Apps: Wario’s Jewels, Sonic’s

          Jewels

   Au niveau professionnel
     Responsable Développement &

      Innovation chez Naviso
Julien LO PRESTI

   Au niveau communautaire
       Contributeur Club SP et .NET Ouest
       MSP
                                                A remplacer
       Développement Apps WP7                  par une
          Don du sang, IC12, Flickr Explorer   photo

   Au niveau professionnel
       Etudiant SUPINFO Rennes
       Stagiaire chez SYNERGIZ
Fabrice BARBIN

   Au niveau communautaire
      Fondateur Club SP et .NET Ouest
      MVP SharePoint Workspace
                                            A remplacer
         Fondateur de la Communauté
                                            par une
          SPW
                                            photo
         Auteur d’un ouvrage dédié à SPW

      Contributeur Club SharePoint FR
       (UGSF)


   Au niveau professionnel
      Dirigeant de SYNERGIZ, centre de
       compétences et de R&D sur
       technologies Microsoft
       (www.synergiz.com)
Contenu de cette session

  Kinect + Office365 : Quel usage en entreprise ?
  Kinect
    Comment ça marche ?

    Du code et de la démo…

        Zoom : Création d’un Framework Kinect

  Office365
    Comment ça marche ?

    Du code et de la démo

  Démonstration du cas d’usage complet
  Quizz et Goodies !
Kinect + Office 365
Quel usage en entreprise ?



      De nombreuses suggestions !




        Minority Reports – Droits réservés - http://fr.wikipedia.org/wiki/Minority_Report
Kinect + Office 365
Quel usage en entreprise ?



   De nombreux champs d’application !
Kinect + Office 365 : Cas
d’usage

                   Communication interne
                   (Information, sensibilisation, culture
                   d’entreprise, management)


                   Accueil d’un visiteur
                   (Information, recherche de personnes, …)



      Via une « borne » placée dans un endroit public
      Pilotée par le geste via Kinect
      Dont le contenu et les fonctionnalités reposent sur Office365
Kinect + Office 365 : Cas
d’usage
  Pourquoi Kinect ?
Kinect + Office 365 : Cas
d’usage
  Pourquoi Office365 ?
Kinect + Office 365 : Cas
d’usage
  Les contraintes spécifiques du projet



                   Environnement sonore

                   Public non formé

                   Données
                   « impersonnelles »
Kinect : Comment ca marche ?

      Contenu (de la « V1 »)
           Un projecteur infrarouge
           Une caméra infrarouge
           Une caméra vidéo
           Des micros
           Une motorisation
      Principe
           Reconnaissance de la profondeur et suivi de
            « joueurs »
              Reconnaissance de 20 points par
                 squelette
              Reconnaissance vocale

              Possibilité (par code) de détecter des
                 postures et des gestes
  En savoir+ : http://fr.wikipedia.org/wiki/Kinect
CODE & DEMO

Une souris dans la Kinect ?
Code : Une souris dans la
Kinect ?
     Une position pour la souris
 // on parcourt tous les squelettes disponibles
 foreach (SkeletonData skeleton in skeletonFrame.Skeletons)
 {
     // Le squelette est-il bien repéré ?
     if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
     {
         // on prend la main droite
         Joint jointHandRight = skeleton.Joints[JointID.HandRight];

         // Qualité trop médiocre on passe son tour
         // (main non affectée par son environnement)
         if (jointHandRight.Position.W < 0.8f)
             continue;

         // on en a trouvé une main ! joie !
         return jointHandRight.Position;
     }
 }
Code : Une souris dans la
Kinect ?
    Affichage du curseur
 // Affichage du curseur
 float x, y;

 // Normalisation dans un range de 0 à 1
 kinect.SkeletonEngine.SkeletonToDepthImage(hand.Value.Position, out x,
 out y);

 double winX = this.ActualWidth * (double)x;
 double winY = this.ActualHeight * (double)y;

 // deplacement par RenderTransform (Translation)
 this.TranslateCursor.X = winX;
 this.TranslateCursor.Y = winY;
CODE & DEMO

Une souris sur mes contrôles !
De la souris aux contrôles :
solution 1        Curseur
            • Position Curseur
            • Diffusion




       Contrôle 1                Contrôle 2
De la souris aux contrôles :
solution 2         Curseur
              • Position Curseur
              • InputHitTest
              • Ancetre IKinectCursorControl




             Contrôle
              Enfant
                                 Contrôle 2

       Contrôle 1
Code : Des events pour un
contrôle control = this.InputHitTest(point) as DependencyObject;
  DependencyObject
   var kinectControl = control as IKinectControl;
   // on cherche si un papa n'est pas un KinectControl
   while (kinectControl == null && control != null) {
       control = VisualTreeHelper.GetParent(control);
       kinectControl = control as IKinectControl;
   }
   if (this.LastKinectControl != kinectControl) {
       // on quitte l'ancien control !
       if (this.LastKinectControl != null) {
           this.LastKinectControl.OnKinectLeave();
       }

      this.LastKinectControl = kinectControl;
       if (kinectControl != null) {
          // on entre pour la première fois !
          kinectControl.OnKinectEnter();
      }
   }
   if( kinectControl != null ){
       // on se deplace car on est déjà rentré
       kinectControl.OnKinectMove(point);
   }
CODE & DEMO

Qu’est-ce qu’elle a ma posture ?
Code : Détection de posture
// on recherche le point de l'épaule
Point epaule = e.GetSkeletonPositionsWithoutDepth(this)[JointID.ShoulderLeft];

// puis la main
Point main = e.GetHandPositionWithoutDepth(this);

// Obtenir l'angle entre deux points grace à pythagore ! AB2=AC2+BC2
double angleInRadian = KinectDevice.GetAngle(main, epaule, AngleUnity.Radian);
double angleInDegree = KinectDevice.RadianToDegree(angleInRadian);

this.Line.X1   =   epaule.X;
this.Line.Y1   =   epaule.Y;
this.Line.X2   =   main.X;
this.Line.Y2   =   main.Y;

// Detection : verifier que l'angle est bien de 140° à + ou - 10° près
if (KinectDevice.IsAngleInRange(angleInDegree, 140, 10)){
        this.Line.Stroke = new SolidColorBrush(Colors.Red);
}
Else {
        this.Line.Stroke = new SolidColorBrush(Colors.White);
}
this.TextAngle.Text = ((int)angleInDegree).ToString() + "°";
CODE & DEMO

Zoom : Framework KINECT
Office 365 : Comment ca
marche ?
CODE & DEMO
Authentification
Exploitation du projet CodePlex de Wictor Wilén (MVP SharePoint)
http://www.wictorwilen.se/
Code : Authentification

//Helper pour injecter le cookie avec le COM SP
MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(siteUrl, login,
password);

context = new ClientContext(siteUrl);
context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest;



//Webclient injectant le cookie
var wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute),
this.Login, this.Password);

//Parse document apres le download
wb.DownloadDataCompleted += (s, args) =>
{
        ...
}
CODE & DEMO

SharePoint : lecture de listes
Code : Liste SharePoint

//Creation url liste SP
string url = this.CreateSharepointListUrl( listId, subUrl, viewId );

//Webclient avec injection du cookie
var wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute),
this.Login, this.Password);

//Parse document apres le download
wb.DownloadDataCompleted += (s, args) =>
{
    var result = new SharepointListResultEventArgs<T>(){ Cancelled =
args.Cancelled, Error = args.Error };

     if (args.Cancelled == false && args.Error == null)
     {
         byte[] data = args.Result;

         result.Result = ParseDocument<T>(data);
     }
};
CODE & DEMO

Lync : Contacts
CODE & DEMO

Lync : Communication
Code : Lync
//Connection
Service.SignIn("login", "mdp",
                () =>
                    {
                         //Obtention des contacts de l’utilisateur
                         foreach (var contact in Service.GetContacts())
                        {
                            ...
                        }
});


service = new LyncService();
//Evènements sur le début et fin de la conversation
service.ConversationStarted += new EventHandler(service_ConversationStarted);
service.ConversationStopped += new EventHandler(service_ConversationStopped);

Personne personne = this.ContactView.DataContext as Personne;
//Début de la conversation
service.StartConversation(personne.Email);
DEMO, the big one !


         OBOX 365
Conclusion
  Kinect
    Oui : Bonne réponse aux attentes

    Mais :

       Ergonomie des applications à ré-imaginer

       Nécessité d’un framework (Dev Haut Niveau)



  Office365
    Oui : Solution pérenne, bien outillée pour répondre aux besoins

    Mais :

        Disponibilité des données à optimiser (Cache)

        Lync : Nécessité d’avoir le client installé



  Kinect+Office365, en entreprise ?
    Oui : Concept démontré

    Mais : Nécessité d’éprouver dans « la vraie vie »
Merci de votre attention

 Autres sessions sur Office365
 Jusqu'à 10 fois plus de
 performance pour Sharepoint et
 Exchange!
 Jeudi 9 Février | 14h30-15h30

 Tout ce que vous avez toujours
 voulu savoir sur Office 365!
 Mercredi 8 Février | 14h30-15h30

 La gouvernance du Cloud : Retour
 d'expériences des clients Office
 365
 Mercredi 8 Février | 13h00-14h00
Merci de votre attention

 Autres sessions sur KINECT
 Au coeur d'un projet Kinect         Kinect Effect - user experience
 innovant                            revolution
 Mardi 7 Février | 16h00-17h00       Mardi 7 Février | 13h00-14h00

 La kinect à l'écoute des nouveaux   Tout sur Microsoft Speech
 usages métiers et interactions      Mercr. 8 Février | 17h30-18h30
 avec les solutions Microsoft
 Mercredi 8 Février | 14h30-15h30
                                     Jeux multi-écrans : envolez-
                                     vous avec Kinect, Silverlight et
 Applications robotiques avec        WP7
 Kinect et Robotics Dev Studio       Mardi 7 Février | 13h00-14h00
 Mercredi 8 Février | 13h00-14h00                                  …
Merci de votre attention

   Quizz




Questions ?   ?




                     Fabrice BARBIN          Julien LO PRESTI      Samuel BLANCHARD
                  fbarbin@synergiz.com   jlopresti@synergiz.com samuel.blanchard@naviso.fr
Vous êtes dans la salle 352A
Kinect + Office365 : Un bon geste en faveur de votre SI !

Contenu connexe

Similaire à Kinect + Office365 : Un bon geste en faveur de votre SI !

Devki formation-developpement-kinect
Devki formation-developpement-kinectDevki formation-developpement-kinect
Devki formation-developpement-kinect
CERTyou Formation
 
Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011
jonasmonnier
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Publicis Sapient Engineering
 
Embarquez pour l'internet des objets avec Microsoft
Embarquez pour l'internet des objets avec Microsoft Embarquez pour l'internet des objets avec Microsoft
Embarquez pour l'internet des objets avec Microsoft
Cédric Bressolles
 

Similaire à Kinect + Office365 : Un bon geste en faveur de votre SI ! (20)

Kinect en entreprise
Kinect en entrepriseKinect en entreprise
Kinect en entreprise
 
Kinect Arduino Robot
Kinect Arduino RobotKinect Arduino Robot
Kinect Arduino Robot
 
Devki formation-developpement-kinect
Devki formation-developpement-kinectDevki formation-developpement-kinect
Devki formation-developpement-kinect
 
Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011
 
Kinect en moins de 10 Minutes
Kinect en moins de 10 MinutesKinect en moins de 10 Minutes
Kinect en moins de 10 Minutes
 
Pres azure paas tdf -rex-hager-vincent thavonekham-regional director-azug f...
Pres azure   paas tdf -rex-hager-vincent thavonekham-regional director-azug f...Pres azure   paas tdf -rex-hager-vincent thavonekham-regional director-azug f...
Pres azure paas tdf -rex-hager-vincent thavonekham-regional director-azug f...
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey Bocquet
 
soft-shake.ch - Adoption de l'Agilité par les usages
soft-shake.ch - Adoption de l'Agilité par les usagessoft-shake.ch - Adoption de l'Agilité par les usages
soft-shake.ch - Adoption de l'Agilité par les usages
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
 
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureGab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
 
meetup devops aix-marseille 27/10/2022
meetup devops aix-marseille 27/10/2022meetup devops aix-marseille 27/10/2022
meetup devops aix-marseille 27/10/2022
 
meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23
 
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Initiation à la réalité augmentée sur Windows Phone 7.5 (Mango)
Initiation à la réalité augmentée sur Windows Phone 7.5 (Mango)Initiation à la réalité augmentée sur Windows Phone 7.5 (Mango)
Initiation à la réalité augmentée sur Windows Phone 7.5 (Mango)
 
Revolution Mobile @Web2day
Revolution Mobile @Web2dayRevolution Mobile @Web2day
Revolution Mobile @Web2day
 
Azure Data Factory-Rebuild 2017
Azure Data Factory-Rebuild 2017 Azure Data Factory-Rebuild 2017
Azure Data Factory-Rebuild 2017
 
Embarquez pour l'internet des objets avec Microsoft
Embarquez pour l'internet des objets avec Microsoft Embarquez pour l'internet des objets avec Microsoft
Embarquez pour l'internet des objets avec Microsoft
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 

Plus de Microsoft Technet France

Plus de Microsoft Technet France (20)

Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
 
Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10
 
OMS log search au quotidien
OMS log search au quotidienOMS log search au quotidien
OMS log search au quotidien
 
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 Fusion, Acquisition - Optimisez la migration et la continuité des outils col... Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 
Wavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semainesWavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semaines
 
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités AzureRetour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
 
Scénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + SecurityScénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + Security
 
SharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationSharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle génération
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le monde
 
Bien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a ServiceBien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a Service
 
Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365
 
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
 
Comprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de MicrosoftComprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de Microsoft
 
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
 
Sécurité des données
Sécurité des donnéesSécurité des données
Sécurité des données
 
Déploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudDéploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloud
 
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
 
SharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybridesSharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybrides
 
Gestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderneGestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderne
 
Office 365 dans votre Système d'Informations
Office 365 dans votre Système d'InformationsOffice 365 dans votre Système d'Informations
Office 365 dans votre Système d'Informations
 

Kinect + Office365 : Un bon geste en faveur de votre SI !

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. Vous êtes dans la salle 352A
  • 3. Kinect + Office365 : Un bon geste en faveur de votre SI ! Mardi 7 février Julien LO PRESTI Samuel BLANCHARD Fabrice BARBIN
  • 4. Samuel BLANCHARD Au niveau communautaire  Rédacteur/Modérateur chez Développez  Rédacteur pour Programmez! A remplacer par une  Fondateur Club SP et .NET Ouest photo  Créateur d’applications Windows Phone  Outil : isoStoreSpy  Apps: Wario’s Jewels, Sonic’s Jewels Au niveau professionnel  Responsable Développement & Innovation chez Naviso
  • 5. Julien LO PRESTI Au niveau communautaire  Contributeur Club SP et .NET Ouest  MSP A remplacer  Développement Apps WP7 par une  Don du sang, IC12, Flickr Explorer photo Au niveau professionnel  Etudiant SUPINFO Rennes  Stagiaire chez SYNERGIZ
  • 6. Fabrice BARBIN Au niveau communautaire  Fondateur Club SP et .NET Ouest  MVP SharePoint Workspace A remplacer  Fondateur de la Communauté par une SPW photo  Auteur d’un ouvrage dédié à SPW  Contributeur Club SharePoint FR (UGSF) Au niveau professionnel  Dirigeant de SYNERGIZ, centre de compétences et de R&D sur technologies Microsoft (www.synergiz.com)
  • 7. Contenu de cette session Kinect + Office365 : Quel usage en entreprise ? Kinect  Comment ça marche ?  Du code et de la démo…  Zoom : Création d’un Framework Kinect Office365  Comment ça marche ?  Du code et de la démo Démonstration du cas d’usage complet Quizz et Goodies !
  • 8. Kinect + Office 365 Quel usage en entreprise ? De nombreuses suggestions ! Minority Reports – Droits réservés - http://fr.wikipedia.org/wiki/Minority_Report
  • 9. Kinect + Office 365 Quel usage en entreprise ? De nombreux champs d’application !
  • 10. Kinect + Office 365 : Cas d’usage Communication interne (Information, sensibilisation, culture d’entreprise, management) Accueil d’un visiteur (Information, recherche de personnes, …)  Via une « borne » placée dans un endroit public  Pilotée par le geste via Kinect  Dont le contenu et les fonctionnalités reposent sur Office365
  • 11. Kinect + Office 365 : Cas d’usage Pourquoi Kinect ?
  • 12. Kinect + Office 365 : Cas d’usage Pourquoi Office365 ?
  • 13. Kinect + Office 365 : Cas d’usage Les contraintes spécifiques du projet Environnement sonore Public non formé Données « impersonnelles »
  • 14. Kinect : Comment ca marche ? Contenu (de la « V1 »)  Un projecteur infrarouge  Une caméra infrarouge  Une caméra vidéo  Des micros  Une motorisation Principe  Reconnaissance de la profondeur et suivi de « joueurs »  Reconnaissance de 20 points par squelette  Reconnaissance vocale  Possibilité (par code) de détecter des postures et des gestes En savoir+ : http://fr.wikipedia.org/wiki/Kinect
  • 15. CODE & DEMO Une souris dans la Kinect ?
  • 16. Code : Une souris dans la Kinect ? Une position pour la souris // on parcourt tous les squelettes disponibles foreach (SkeletonData skeleton in skeletonFrame.Skeletons) { // Le squelette est-il bien repéré ? if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { // on prend la main droite Joint jointHandRight = skeleton.Joints[JointID.HandRight]; // Qualité trop médiocre on passe son tour // (main non affectée par son environnement) if (jointHandRight.Position.W < 0.8f) continue; // on en a trouvé une main ! joie ! return jointHandRight.Position; } }
  • 17. Code : Une souris dans la Kinect ? Affichage du curseur // Affichage du curseur float x, y; // Normalisation dans un range de 0 à 1 kinect.SkeletonEngine.SkeletonToDepthImage(hand.Value.Position, out x, out y); double winX = this.ActualWidth * (double)x; double winY = this.ActualHeight * (double)y; // deplacement par RenderTransform (Translation) this.TranslateCursor.X = winX; this.TranslateCursor.Y = winY;
  • 18. CODE & DEMO Une souris sur mes contrôles !
  • 19. De la souris aux contrôles : solution 1 Curseur • Position Curseur • Diffusion Contrôle 1 Contrôle 2
  • 20. De la souris aux contrôles : solution 2 Curseur • Position Curseur • InputHitTest • Ancetre IKinectCursorControl Contrôle Enfant Contrôle 2 Contrôle 1
  • 21. Code : Des events pour un contrôle control = this.InputHitTest(point) as DependencyObject; DependencyObject var kinectControl = control as IKinectControl; // on cherche si un papa n'est pas un KinectControl while (kinectControl == null && control != null) { control = VisualTreeHelper.GetParent(control); kinectControl = control as IKinectControl; } if (this.LastKinectControl != kinectControl) { // on quitte l'ancien control ! if (this.LastKinectControl != null) { this.LastKinectControl.OnKinectLeave(); } this.LastKinectControl = kinectControl; if (kinectControl != null) { // on entre pour la première fois ! kinectControl.OnKinectEnter(); } } if( kinectControl != null ){ // on se deplace car on est déjà rentré kinectControl.OnKinectMove(point); }
  • 22. CODE & DEMO Qu’est-ce qu’elle a ma posture ?
  • 23. Code : Détection de posture // on recherche le point de l'épaule Point epaule = e.GetSkeletonPositionsWithoutDepth(this)[JointID.ShoulderLeft]; // puis la main Point main = e.GetHandPositionWithoutDepth(this); // Obtenir l'angle entre deux points grace à pythagore ! AB2=AC2+BC2 double angleInRadian = KinectDevice.GetAngle(main, epaule, AngleUnity.Radian); double angleInDegree = KinectDevice.RadianToDegree(angleInRadian); this.Line.X1 = epaule.X; this.Line.Y1 = epaule.Y; this.Line.X2 = main.X; this.Line.Y2 = main.Y; // Detection : verifier que l'angle est bien de 140° à + ou - 10° près if (KinectDevice.IsAngleInRange(angleInDegree, 140, 10)){ this.Line.Stroke = new SolidColorBrush(Colors.Red); } Else { this.Line.Stroke = new SolidColorBrush(Colors.White); } this.TextAngle.Text = ((int)angleInDegree).ToString() + "°";
  • 24. CODE & DEMO Zoom : Framework KINECT
  • 25. Office 365 : Comment ca marche ?
  • 26. CODE & DEMO Authentification Exploitation du projet CodePlex de Wictor Wilén (MVP SharePoint) http://www.wictorwilen.se/
  • 27. Code : Authentification //Helper pour injecter le cookie avec le COM SP MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(siteUrl, login, password); context = new ClientContext(siteUrl); context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest; //Webclient injectant le cookie var wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute), this.Login, this.Password); //Parse document apres le download wb.DownloadDataCompleted += (s, args) => { ... }
  • 28. CODE & DEMO SharePoint : lecture de listes
  • 29. Code : Liste SharePoint //Creation url liste SP string url = this.CreateSharepointListUrl( listId, subUrl, viewId ); //Webclient avec injection du cookie var wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute), this.Login, this.Password); //Parse document apres le download wb.DownloadDataCompleted += (s, args) => { var result = new SharepointListResultEventArgs<T>(){ Cancelled = args.Cancelled, Error = args.Error }; if (args.Cancelled == false && args.Error == null) { byte[] data = args.Result; result.Result = ParseDocument<T>(data); } };
  • 30. CODE & DEMO Lync : Contacts
  • 31. CODE & DEMO Lync : Communication
  • 32. Code : Lync //Connection Service.SignIn("login", "mdp", () => { //Obtention des contacts de l’utilisateur foreach (var contact in Service.GetContacts()) { ... } }); service = new LyncService(); //Evènements sur le début et fin de la conversation service.ConversationStarted += new EventHandler(service_ConversationStarted); service.ConversationStopped += new EventHandler(service_ConversationStopped); Personne personne = this.ContactView.DataContext as Personne; //Début de la conversation service.StartConversation(personne.Email);
  • 33. DEMO, the big one ! OBOX 365
  • 34. Conclusion Kinect  Oui : Bonne réponse aux attentes  Mais :  Ergonomie des applications à ré-imaginer  Nécessité d’un framework (Dev Haut Niveau) Office365  Oui : Solution pérenne, bien outillée pour répondre aux besoins  Mais :  Disponibilité des données à optimiser (Cache)  Lync : Nécessité d’avoir le client installé Kinect+Office365, en entreprise ?  Oui : Concept démontré  Mais : Nécessité d’éprouver dans « la vraie vie »
  • 35. Merci de votre attention Autres sessions sur Office365 Jusqu'à 10 fois plus de performance pour Sharepoint et Exchange! Jeudi 9 Février | 14h30-15h30 Tout ce que vous avez toujours voulu savoir sur Office 365! Mercredi 8 Février | 14h30-15h30 La gouvernance du Cloud : Retour d'expériences des clients Office 365 Mercredi 8 Février | 13h00-14h00
  • 36. Merci de votre attention Autres sessions sur KINECT Au coeur d'un projet Kinect Kinect Effect - user experience innovant revolution Mardi 7 Février | 16h00-17h00 Mardi 7 Février | 13h00-14h00 La kinect à l'écoute des nouveaux Tout sur Microsoft Speech usages métiers et interactions Mercr. 8 Février | 17h30-18h30 avec les solutions Microsoft Mercredi 8 Février | 14h30-15h30 Jeux multi-écrans : envolez- vous avec Kinect, Silverlight et Applications robotiques avec WP7 Kinect et Robotics Dev Studio Mardi 7 Février | 13h00-14h00 Mercredi 8 Février | 13h00-14h00 …
  • 37. Merci de votre attention Quizz Questions ? ? Fabrice BARBIN Julien LO PRESTI Samuel BLANCHARD fbarbin@synergiz.com jlopresti@synergiz.com samuel.blanchard@naviso.fr
  • 38. Vous êtes dans la salle 352A