Upload
microsoft
View
237
Download
4
Embed Size (px)
DESCRIPTION
Windows Phone regorge d’APIs pour vous simplifier la vie et intégrer au mieux votre application dans le système. Si vous entendez que quelques lignes suffisent pour enregistrer un rendez-vous dans le calendrier de votre utilisateur, vous ne rêvez pas ! Nous ferons le tour des différents services à disposition pour créer facilement une belle expérience dans votre application : Géolocalisation, Cartographie, intégration dans les contacts, App to App, Speech, etc.
Citation preview
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 ?