1 / 60

Migrer vers Windows Phone 7 depuis iOS , Android ou Windows Mobile

Migrer vers Windows Phone 7 depuis iOS , Android ou Windows Mobile. 8 février 2011 Fabien Decret MVP Device Application Development Adeneo Embedded Stéphane Sibué MPV Windows Phone Development Softélite. Les TechDays …. 17 000 visiteurs sur 3 jours

sakina
Télécharger la présentation

Migrer vers Windows Phone 7 depuis iOS , Android ou Windows Mobile

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Migrer vers Windows Phone 7 depuis iOS, Android ou Windows Mobile 8 février 2011 Fabien Decret MVP Device Application Development Adeneo Embedded Stéphane Sibué MPV Windows Phone Development Softélite

  2. Les TechDays… • 17 000 visiteurs sur 3 jours • Plus de 300 conférences techniques • Plus de 300 speakers • Plus de 140 exposants • Plus de 150 journalistes • Une plénière chaque jour présentant la stratégie de Microsoft • Diffusion online en direct des conférences plénières tous les matins • Diffusion online en direct des conférences de l’amphithéâtre grand bleu

  3. Plan de la session • Introduction aux plateformes • TechPlayer, le fil conducteur • Architecture des applications • Téléchargement et parsing XML • Téléchargement d’une image • Création d’une liste d’objets • Navigation vers une autre page • Lecture d’une vidéo • Les APIs • Le cycle de vie d’une application

  4. Introduction aux plateformes Windows Phone 7 Dernière génération mobile de Microsoft (10/2010) Rupture d’interface avec l’ancienne génération Style Metro (léger, sobre, typographie, pas de chrome…) Interface 100% au doigt Technologies Silverlight / XNA .NET / Compact Framework 4 C# / VB Outils de développement VS2010 Express For Windows Phone (gratuit) Expression Blend (gratuit)

  5. Introduction aux plateformes Windows Mobile 6.X Ancienne génération mobile de Microsoft Interface au doigt si développement de composants adaptés Technologies SDK Windows Mobile 6.5 WinForms .NET / Compact Framework 3.5 C# / VB / code natif (C++) Outils de développement VS2008 Pro (payant)

  6. Introduction aux plateformes Android OS mobile de Google Interface au doigt Technologies Basé sur un noyau Linux VM spéciale Dalvik Java Outils de développement Eclipse (gratuit)

  7. Introduction aux plateformes iOS OS mobile d’Apple Interface au doigt Technologies Basé sur Mac OSX Objective C et C Outils de développement XCode (gratuit) Interface Builder (gratuit)

  8. Introduction aux plateformes

  9. TechPlayer, le fil conducteur Application de lecture vidéo Utilise un catalogue XML téléchargé depuis le net Affiche la liste des vidéos Affiche une page d’informations par vidéo Joue les vidéos

  10. TechPlayer, le fil conducteur Thèmes Architecture générale Téléchargement et parsing XML Téléchargement d’images Affichage d’une liste d’objets Navigation entre pages Jouer une vidéo

  11. Architecture générale

  12. Architecture générale Windows Mobile, iOSet Android Modèle MVC Contrôleur - synchronisation de la vue et du modèle Vue -présenter les résultats - traiter les actions utilisateur • Modèle • traitements des données • interactions avec la base de données…

  13. Architecture générale Windows Phone 7 • Modèle MVVM • Séparer IHM des traitements métiers • Adapté pour le DataBinding UI en XAML / le moins possible de code-behind Vue - s’occupe du rendu VueModèle - Glue entre Vue et Modèle INotifyPropertyChanged Modèle - objets de données métiers

  14. MVVM adapté à TechPlayer MainPage VideoPage • VideoItemViewModel • - Name • Length • Comment • ImageUrl • File VideoViewModel ObservableCollection 0..* • Videos • downloadvideos • parser vidéos INotifyPropertyChanged

  15. Téléchargement et parsing XML

  16. Téléchargement et parsing XML Windows Mobile Utilisation de la classe HttpWebRequest (synchrone) Téléchargement réalisé via un XmlReaderHttpWebRequestweb_request = (HttpWebRequest)HttpWebRequest.Create(@"http://..."); HttpWebResponsewebResponse = (HttpWebResponse)web_request.GetResponse(); XmlReaderxmlReader = XmlReader.Create(webResponse.GetResponseStream()); …

  17. Téléchargement et parsing XML Windows Mobile Parsing réalisé via du LINQ XDocumentxDoc = XDocument.Load(xmlReader); List<Video> res = (xDoc.Descendants("video").Select( i => new VideoItemViewModel{ Name = root.Attribute("nom").Value, Length = root.Attribute("duree").Value, Icon = root.Attribute("vignette").Value, File = root.Attribute("chemin").Value, Comment = root.Attribute("commentaire").Value })).ToList();

  18. Téléchargement et parsing XML Android Utilisation de la classe SAXParser Téléchargement réalisé via un InputStreamurl= new URL("http://...); InputStream input = Url.OpenStream(); Parsing réalisé par une classe spéciale (handler) invoquée par le parser public class CatalogParserextendsDefaultHandler @Override public void startElement(String uri, String localName, …

  19. Téléchargement et parsing XML iOS Utilisation de la classe NSXMLParser Téléchargement réalisé par le parser directement NSURL *url= [NSURL URLWithString:@”http://.....”]; NSXMLParser *parser = [[NSXMLParser alloc] initWithContentOfUrl:url]; Parsing réalisé par une classe spécial (délégué) invoquée par le parser @interface CatalogParser : NSObject <NSXMLParserDelegate> (void)parser:(NSXMLParser *)parserdidStartElement:(NSString *)elementName…

  20. Téléchargement et parsing XML Windows Phone 7 Utilisation de la classe WebClient (asynchrone) Téléchargement asynchronevarwebclient = new WebClient(); webclient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webclient_DownloadStringCompleted); webclient.DownloadStringAsync(new Uri(@"http://...", UriKind.Absolute)); voidwebclient_DownloadStringCompleted(objectsender, DownloadStringCompletedEventArgs e) { // Parsing }

  21. Téléchargement et parsing XML Windows Phone 7 Parsing réalisé via du LINQ XDocumentxDoc = XDocument.Parse(e.Result); List<Video> res = (xDoc.Descendants("video").Select( i => new VideoItemViewModel{ Name = root.Attribute("nom").Value, Length = root.Attribute("duree").Value, Icon = root.Attribute("vignette").Value, File = root.Attribute("chemin").Value, Comment = root.Attribute("commentaire").Value })).ToList();

  22. Téléchargement d’une image

  23. Téléchargement d’une image Windows Mobile Téléchargement via une HttpWebResquest HttpWebRequestmyRequest = (HttpWebRequest)WebRequest.Create(URL); myRequest.Method = "GET"; HttpWebResponsemyResponse = (HttpWebResponse)myRequest.GetResponse(); Création de l’image via la classe Bitmap Bitmap bmp = new Bitmap(myResponse.GetResponseStream());

  24. Téléchargement d’une image Android Téléchargement réalisé via un InputStreamurl= new URL("http://...”); InputStream input = (inputStream) Url.OpenStream(); Création de l’image via la classe Drawable Drawable d = Drawable.createFromStream(input, “sourcename");

  25. Téléchargement d’une image iOS Téléchargement réalisé via un NSDataNSURL * url = [NSURL URLWithString:@”http://.....”]; NSData *data = [NSDatadataWithContentsOfURL:url]; Création de l’image via la classe UIImage UIImage *image = [UIImageimageWithData:data];

  26. Téléchargement d’une image Windows Phone 7 Téléchargement réalisé dans code behindBitmapImage Image = new BitmapImage(new Uri(:@”http://...”, UriKind.Absolute)); Téléchargement réalisé dans XAML via du Binding <Image Source="{Binding url}"/>

  27. Création d’une liste d’objets

  28. Création d’une liste d’objets Windows Mobile • Utilisation du contrôle ListView • Utilisation du UIFramework • Classe ListViewOwnerDrawn • Liste totalement personnalisable, il est possible de dessiner manuellement les items de la liste via le Graph de chaque item. • Liste à coupler avec les fonctions wrappées d’AlphaBlend ou IImage afin de gérer des Bitmaps transparents par exemple.Scrollable grâce à l’API de Gesture • Utilisation de librairies de composants graphiques • Remplissage manuel de la liste

  29. Création d’une liste d’objets Android Utilisation du contrôle ListView Création d’un adapter héritant de BaseAdapter public class VideoAdapterextendsBaseAdapter Connexion entre la ListView et son adapter ListViewlstVideos; VideoAdapter adapter; lstVideos= (ListView)findViewById(R.id.lstVideos); this.adapter= new VideoAdapter(this); this.lstVideos.setAdapter(adapter); L’adapter fournit les données à la liste L’adapter fournit les cellules (graphiquement) à la liste

  30. Création d’une liste d’objets iOS Utilisation du contrôle UITableView Création d’un fournisseur de données <UITableViewDataSource> public class VideoAdapterextendsBaseAdapter Connexion entre la UITableViewet son DataSource maTableView.dataSource = monDataSource; Le DataSource fournit les données à la liste Le DataSource fournit les cellules (graphiquement) à la liste

  31. Création d’une liste d’objets Windows Phone 7 Utilisation du composant ListBox <ListBox x:Name="VideosList" ItemsSource="{BindingMyVideos}" ItemContainerStyle="{StaticResourceItemTemplate}"  Binding à une ObservableCollection ItemsSource="{BindingMyVideos}"

  32. Création d’une liste d’objets Windows Phone 7 Personnalisation de la liste (templates) <Style x:Key="ItemTemplate" TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplateTargetType="ListBoxItem"> <Grid x:Name="ItemGrid" Background="Transparent«  HorizontalAlignment="Stretch" MinHeight="110"Margin="0,0,0,5"CacheMode="BitmapCache"> <Grid.ColumnDefinitions> <ColumnDefinitionWidth="110"/> <ColumnDefinitionWidth="*"/> </Grid.ColumnDefinitions> <Image Source="{BindingBitmapUrl}"  Grid.Column="0«  Height="100" Width="100" Stretch="UniformToFill" HorizontalAlignment="Left" VerticalAlignment="Center"/> <StackPanel Orientation="Vertical" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Center"> …

  33. Création d’une liste d’objets Windows Phone 7 Personnalisation de la liste (templates)… <TextBlockText="{Binding Name}" Foreground="White" TextWrapping="Wrap" FontFamily="Segoe WP Light" Style="{StaticResourcePhoneTextExtraLargeStyle}" /> <TextBlockText="{BindingLength}" Foreground="White«  TextWrapping="Wrap" Style="{StaticResourcePhoneTextBlockBase}" /> </StackPanel> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>

  34. Création d’une liste d’objets Windows Phone 7 • Comportement dynamique VisualStateManager • Possibilité de définir des comportements pour les états ou lors du changement d’état : • Selected • UnSelected • MouseOver • Normal…

  35. Navigation vers une autre page

  36. Navigation vers une autre page Windows Mobile Création des différentes Forms Possibilité de créer des User Controls Utilisation de singleton ou passage de données en paramètres du constructeur d’un Form Composant Tab

  37. Navigation vers une autre page iOS Création des différentes vues Utilisation de UINavigationController Fournit tous les outils pour gérer la navigationGère une pile de vues et leur ordre

  38. Navigation vers une autre page Android Création des différentes activités Appel des activités dans l’ordre souhaité Intentintent = new Intent(this, EntryInfoActivity.class); startActivity(intent); Gestion d’une valeur de retour si nécessaire StartActivityForResult(…

  39. Navigation vers une autre page Windows Phone 7 • Les bases • Une PhoneApplicationFrame • Plusieurs PhoneApplicationPages • Navigation • NavigationService.Navigate( • new Uri("/VideoPage.xaml", UriKind.Relative)); • Passage d’arguments • Assigner le DataContext à la page suivante • Passer les arguments dans l’URI de la page destination • Composants • Pivot • Naviguer / séparer / trier / charger les items séparément • Panorama • Suggérer / explorer / tout charger en même temps

  40. Lecture d’une vidéo

  41. Lecture d’une vidéo Windows Mobile Utilisation du composant Media Player importé depuis l’ActiveX MediaPlayer via un wrapperd’object COM API disponibles : - Play - Url - eventBuffering Utilisation de DDSHOW via du code natif et des wrappers

  42. Lecture d’une vidéo iOS Utilisation de MPMoviePlayer Dans sa propre vue grâce au contrôleur MPMoviePlayerViewController ou inclus dans une vue composite. Lecture en local ou en streaming sur le net

  43. Lecture d’une vidéo Android Utilisation du composant VideoView Inclus dans la vue Lecture en local ou en streaming sur le net Associé au composant MediaController pour bénéficier des commandes de lecture sans programmation.

  44. Lecture d’une vidéo Windows Phone 7 • Le nouveau composant MediaElement est directement accessible depuis le code Silverlight et décode nativement les formats suivants: • H263 • WMV • MPEG-4 • Fonctionnalités • Play / Pause • Source • Event DownloadProgressChanged • Binding de la scrollbar • <ProgressBar Value="{BindingPosition.TotalSeconds, ElementName=mediaElement1, Mode=OneWay}" Minimum="0" Maximum ="{BindingLength}" Style="{StaticResourcePerformanceProgressBar}"/>

  45. Les APIs

  46. Les APIs Windows Mobile • Fastidieux ca r besoin de récupérer les informations liées au téléphone • Accéléromètre • GPS • Radio FM • Gestion des boutons • Besoin de faire appel aux DLLs bas niveau du constructeur ou des APIs WINCE

  47. Les APIs iOS SDK complet Les fonctions d’accès au device sont unifiées et nombreuses Hardware figé, simplifiant le développement

  48. Les APIs Android SDK complet Les fonctions d’accès aux infos du device sont nombreuses Hardware non figé, rendant complexe le développement

  49. Les APIs Windows Phone 7 • Gestion unifiée des APIs • Accéléromètre • GPS • Orientation de l’écran • Radio FM • Gestion des boutons du téléphone • Châssis standard pour tous les téléphones = Pas de cas particuliers à gérer

More Related