Donnez votre avis !Depuis votre smartphone, sur : http://notes.mstechdays.fr
De nombreux lots à gagner toutes les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les TechDays
http://notes.mstechdays.fr
Géolocalisation, Speech, Intégration
Tirez parti des nouveautés de Windows Phone 8
Phone / mobilité
Samuel BlanchardWindows Phone MVP - Naviso
@samoteph
Julie KnibbeTechnical Evangelist - Microsoft France
@julieknibbe
Jean-Sébastien DupuyTechnical Evangelist - Microsoft France
@dupuyjs
AGENDATirez parti des nouveautés de Windows Phone 8
Phone
Tirez parti des nouveautés de Windows Phone 8
Trucs et astuces pour rendre votre application Windows Phone 8 plus visibleMardi 12 février : 16h00-17h00 (niveau : 200)
Plus près, plus près… NFC et la communication à proximité dans Windows 8 et Windows Phone 8Jeudi 14 février : 14h30-15h30 (niveau : 200)
Quelles sont les autres nouveautés ?
Tirez parti des nouveautés de Windows Phone 8
De quoi parle cette session?
Text To Speech
Reconnaissance Vocale
Communication App To App
Contrôles, Résolutions
Launchers
Cartographie
CONTRÔLESTirez parti des nouveautés de Windows Phone 8
Phone
LongListSelector
Tirez parti des nouveautés de Windows Phone 8
• Utilisez LongListSelector en lieu et place du ListBox– Mêmes fonctionnalités mais
meilleures performances• Les bénéfices additionnels
– Grouped Lists (IsGroupingEnabled)– Jump List pour faciliter le
déplacement entre les groupes, même comportement que le Contact Hub
demoCONTRÔLESLongListSelector
Tirez parti des nouveautés de Windows Phone 8
Tirez parti des nouveautés de Windows Phone 8
Contrôles
• LongListSelector, Pivot et Panorama placés en ROM– Amélioration globale des performances– Empreinte mémoire du Panorama plus réduite
• Le contrôle WebBrowser repose désormais sur Internet Explorer 10– Supporte HTML5
• Windows Phone Toolkit (Octobre 2012)– Téléchargez WPToolkit depuis NuGet– Contrôles PhoneTextBox, HubTile, …
RÉSOLUTIONS D’ÉCRANTirez parti des nouveautés de Windows Phone 8
Phone
Résolutions d’écran
Tirez parti des nouveautés de Windows Phone 8
WVGA800 x 48015:9
WXGA1280 x 76815:9
720p1280 x 72016:9
Tirez parti des nouveautés de Windows Phone 8
• Adaptez votre Layout !!– Evitez de fixer les valeurs des propriétés Width et
Height, attention aux alignements et marges– Privilégiez l’utilisation des Grilles et des formats * et Auto
• Graphiques– Utilisez les images ciblant la résolution WXGA, le
téléphone adapte correctement ce format en fonction de la résolution
– Pour allez plus loin, App.Current.Host.Content.ScaleFactor pour charger les graphiques appropriés
Résolutions d’écran
Tirez parti des nouveautés de Windows Phone 8
Résolutions d’écranpublic enum Resolutions { WVGA, WXGA, HD720p };
public static class ResolutionHelper{
private static bool IsWvga { get { return App.Current.Host.Content.ScaleFactor == 100; } } private static bool IsWxga { get { return App.Current.Host.Content.ScaleFactor == 160; } } private static bool Is720p { get { return App.Current.Host.Content.ScaleFactor == 150; } }
public static Resolutions CurrentResolution { get {
if (IsWvga) return Resolutions.WVGA; else if (IsWxga) return Resolutions.WXGA; else if (Is720p) return Resolutions.HD720p; else throw new InvalidOperationException("Unknown resolution"); } } }
Tirez parti des nouveautés de Windows Phone 8
Résolutions d’écranusing System.Windows.Media.Imaging;
public class MultiResImageChooserUri{ public Uri BestResolutionImage { get { switch (ResolutionHelper.CurrentResolution) {
case Resolutions.HD720p: return new Uri("Assets/MyImage.screen-720p.jpg", UriKind.Relative); case Resolutions.WXGA: return new Uri("Assets/MyImage.screen-wxga.jpg", UriKind.Relative); case Resolutions.WVGA: return new Uri("Assets/MyImage.screen-wvga.jpg", UriKind.Relative); default: throw new InvalidOperationException("Unknown resolution type"); } } }}
LAUNCHERS & CHOOSERSTirez parti des nouveautés de Windows Phone 8
Phone
Tirez parti des nouveautés de Windows Phone 8
• Meilleur moyen d’interagir avec les fonctionnalités natives du téléphone, ils permettent d’effectuer des tâches comme :– Prendre une photo– Ajouter un contact– Envoyer un Mail ou un SMS– Etc…
• Nouveaux Launchers sous Windows Phone 8 :– SaveAppointmentTask : Ajout d’un nouveau rendez-vous dans le calendrier.– ShareMediaTask : Partagez vos medias !– MapsTask : Cherchez les points d’intérêts autours de vous !– MapsDirectionsTask : Perdu ? Obtenez votre itinéraire …
Et MapDownloaderTask, MapUpdaterTask dans la suite du programme.
• Attention au Tombstoning
Nouveaux Launchers
demoLAUNCHERS
Tirez parti des nouveautés de Windows Phone 8
CARTOGRAPHIETirez parti des nouveautés de Windows Phone 8
Phone
Tirez parti des nouveautés de Windows Phone 8
• Nouvelle API Windows Phone Runtime locationConvergente avec l’API Windows 8 location – API Windows Phone 7.1 supportées
– System.Device.Location.GeoCoordinateWatcher et autres
Les nouveautés en Géolocalisation
Tirez parti des nouveautés de Windows Phone 8
2 conditions pour avoir le droit de parler aux Location API :• Le déclarer dans le manifest de l’application :
ID_CAP_LOCATION• Demander l’accord de l’utilisateur
Avant toute chose…
20
Tirez parti des nouveautés de Windows Phone 8
• Connaître la position du téléphone juste une fois : Geolocator.GetGeopositionAsync
• Tracker les changements de position :Geolocator.PositionChanged && Geolocator.StatusChanged
Où se cache mon utilisateur ?
Tirez parti des nouveautés de Windows Phone 8
• No possiblo• Utilisez la propriété DesiredAccuracy du
Geolocator (high / default) ou DesiredAccuracyInMeters
• Dans tous les cas, c’est lui qui décide
Contrôler les sources utilisées ?
04/14/2023 ‹#›
+ Accuracy- Power- Speed- Indoors
- Accuracy+ Power+ Speed- Wilderness +/- Accuracy
+/- Power+/- Speed+/- Urban areas
GPSWiFi
Tirez parti des nouveautés de Windows Phone 8
Localisation 1 Shot avec GetGeopositionAsync private async void OneShotLocation_Click(object sender, RoutedEventArgs e) { Geolocator geolocator = new Geolocator(); geolocator.DesiredAccuracyInMeters = 50; try { Geoposition geoposition = await geolocator.GetGeopositionAsync( maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(10) ); LatitudeTextBlock.Text = geoposition.Coordinate.Latitude.ToString("0.00"); LongitudeTextBlock.Text = geoposition.Coordinate.Longitude.ToString("0.00"); } catch (UnauthorizedAccessException) { // the app does not have the right capability or the location master switch is off StatusTextBlock.Text = "location is disabled in phone settings."; }}
demoTirez parti des nouveautés de Windows Phone 8 26
Tirez parti des nouveautés de Windows Phone 8
• Un nouvel état de l’application : RunningInBackground
• Actif tant que l’application continue de tracker la position
Votre application passe à l’état Dormant, so what?
running
deactivated
suspended
activated
tombstoned
Activa
ted
deactivated
Deactivated
Running in bckgd
Tirez parti des nouveautés de Windows Phone 8
• Arrêter tout ce qui ne concerne pas la localisation• Ne pas toucher à l’UI (ça sert à rien)
Que faire dans cet état ? (RunningInBackground)
<Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing“ Activated="Application_Activated" Deactivated="Application_Deactivated“ RunningInBackground="Application_RunningInBackground"/> </Application.ApplicationLifetimeObjects>
demoRun In Background
Tirez parti des nouveautés de Windows Phone 8 29
Tirez parti des nouveautés de Windows Phone 8
• Données Nokia110+ pays, cartes vectorielles
• Cartes offlineLaunchers MadDownloader/MapUpdater
• Calcul d’itinéraires / Géocodage– via Maps Services
• Dépréciation de l’ancient Bing Map Control
Afficher une carte dans Windows Phone 8
Tirez parti des nouveautés de Windows Phone 8
Cartographic Mode
31
Road (default) Aerial Hybrid Terrain
Tirez parti des nouveautés de Windows Phone 8
ColorMode : Light ou Dark ?
32
demoMaps
Tirez parti des nouveautés de Windows Phone 8 33
Tirez parti des nouveautés de Windows Phone 8
Où sont passés les pushpins ?
34
• Partis !• 2 solutions :• Créer des pushpins custom en dessinant
un UIElement dans un MapOverLay à ajouter dans un MapLayer, à ajouter dans Map.Children. C’est tout.
• Utiliser le composant Pushpin fourni dans Windows Phone Toolkit
TEXT2SPEECHTirez parti des nouveautés de Windows Phone 8
Phone
Text2Speech – Les bases
Tirez parti des nouveautés de Windows Phone 8
• Qu’est ce que c’est ?• Mise en place :
• Manifest : - ID_CAP_SPEECH_RECOGNITION• Classe – SpeechSynthesizer +
SpeakTextAsync• Mise en queue• InstalledVoices : Langue & Genre (SetVoice)• Sur Device : Langue à installer manuellement
Text2Speech – Technique avancée
Tirez parti des nouveautés de Windows Phone 8
• Le SSML = fichier XML• Mise en place :
• Le header <speak/> • Le tag Voice : Langue + Genre• Le tag Prosody : Manière de parler • Le tag Audio : Ajouter un wav
demoSpeech – Les bases + Avancés
Tirez parti des nouveautés de Windows Phone 8 38
Text2Speech – Exemple d’utilisation
Tirez parti des nouveautés de Windows Phone 8
• Accessibilité au malvoyant• SpeechBehavior
xmlns:behaviors="clr-namespace:SamuelBlanchard.Accessibility" behaviors:SpeechBehavior.CanSpeak="True"behaviors:SpeechBehavior.Language="fr-FR"
• Téléchargement : – http://blog.naviso.fr/wordpress/?p=1573
demoSpeech – Accessibilité
Tirez parti des nouveautés de Windows Phone 8 40
SPEECHRECOGNITIONTirez parti des nouveautés de Windows Phone 8
Phone
Recognition – Les bases
Tirez parti des nouveautés de Windows Phone 8
• Qu’est ce que c’est ?• Nécessite internet
• Manifest :• ID_CAP_SPEECH_RECOGNITION,• ID_CAP_MICROPHONE, • ID_CAP_NETWORKING
• Avec Boite de dialogue : SpeechRecognizerUI
• Sans Boite : SpeechRecognizer• InstalledSpeechRecognizers : Langue &
Genre (SetRecognizer)• Sur device : Langue à installer manuellement +
Autorisation
Recognition – Résultat
Tirez parti des nouveautés de Windows Phone 8
• Une chaine de caractère• Un indice de confiance :– Hight– Low– Medium– Rejected
Recognition – Avancé
Tirez parti des nouveautés de Windows Phone 8
• Gérer la grammaire de son application (préfixé en AddGrammar)• FromPredefinedType: Dictation (defaut) ou
WebSearch• FromList: Ne regade que dans cette liste
sinon Rejected• FromUri : Fichier SRGS grammars : .grxml
sr.Grammars.AddGrammarFromPredefinedType("webSearch", SpeechPredefinedGrammar.WebSearch);
demoSpeech – Monsieur et Madame !
Tirez parti des nouveautés de Windows Phone 8 45
APP TO APP COMMUNICATIONTirez parti des nouveautés de Windows Phone 8
Phone
AppToApp – Les bases
Tirez parti des nouveautés de Windows Phone 8 ms-settings-airplanemode:
Launch Bluetooth Settings Page ms-settings-bluetooth:
• Qu’est ce que c’est ?• Association d’URI ou extension de Fichier• Les URI système : (exemples)
– Mode Avion : ms-settings-airplanemode:– Panneau BlueTooth : ms-settings-bluetooth:
• Le lancement : – Launcher. LaunchUriAsync(new Uri(monUri))
AppToApp – Avancé
Tirez parti des nouveautés de Windows Phone 8 ms-settings-airplanemode:
Launch Bluetooth Settings Page ms-settings-bluetooth:
• Mise en place : association URI– Format de l’URI -> protocole:paramètres– Manifest :
<Extensions> <Protocol Name="techdays2013" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" /></Extensions>
– URI commence par /protocole – UriMapper pour router l’uri (qui n’est pas une
page)– OnNavigatedTo => traitement de l’uri
RootFrame.UriMapper = new AssociationUriMapper();
AppToApp – Code UriMapper
Tirez parti des nouveautés de Windows Phone 8 ms-settings-airplanemode:
Launch Bluetooth Settings Page ms-settings-bluetooth:
public override Uri MapUri(Uri uri) { // on decode la chaine pour recupérer le protocole original string uriString = HttpUtility.UrlDecode(uri.ToString()); const string uriTechdays = "/Protocol?encodedLaunchUri=techdays2013:///";
if (uriString.StartsWith(uriTechdays)) { // On recupère tout se qui suit le ? (le ? étant inclus) string query = uriString.Substring(uriTechdays.Length);
return new Uri("/SpeechRecognitionPage.xaml" + query, UriKind.Relative); }
return uri; }
demoAppToApp – Je m’auto-lance !
Tirez parti des nouveautés de Windows Phone 8 50
Trucs et astuces pour rendre votre application Windows Phone 8 plus visibleMardi 12 février : 16h00-17h00 (niveau : 200)
Cycle de vie d'une application Windows 8 et Windows Phone 8Mardi 12 février : 16h00-17h00 (niveau : 300)
L'histoire d'HTML5 pour les développeurs Windows Phone 8Mercredi 13 février : 16h00-17h00 (niveau : 200)
Et ensuite ?
Booster votre application Windows Phone 8Mercredi 13 février : 17h30-18h30 (niveau : 300)
Bien soumettre et monétiser votre application Windows 8 et Windows Phone 8Jeudi 14 février : 11h00-12h00 (niveau : 200)
Plus près, plus près… NFC et la communication à proximité dans Windows 8 et Windows Phone 8Jeudi 14 février : 14h30-15h30 (niveau : 200)
Et ensuite ?
Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner gratuitement
Essayer gratuitement nos solutions IT
Retrouver nos experts Microsoft
Pros de l’ITDéveloppeurs
www.microsoftvirtualacademy.com
http://aka.ms/generation-app
http://aka.ms/evenements-developpeurs
http://aka.ms/itcamps-france
Les accélérateursWindows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDNhttp://aka.ms/devteam
L’IT Team sur TechNethttp://aka.ms/itteam
Questions ?