Portage d’une application Windows Runtime 8.x vers UWP pour le modèle d’E/S, d’appareil et d’applicationPorting Windows Runtime 8.x to UWP for I/O, device, and app model

Rubrique précédente : Portage du balisage XAML et de la couche interface utilisateur.The previous topic was Porting XAML and UI.

Le code qui s’intègre à l’appareil proprement dit et à ses capteurs implique des entrées de l’utilisateur et des sorties vers ce dernier.Code that integrates with the device itself and its sensors involves input from, and output to, the user. Il peut également impliquer le traitement des données.It can also involve processing data. Toutefois, ce code n’est généralement pas considéré comme la couche d’interface utilisateur ou la couche de données.But, this code is not generally thought of as either the UI layer or the data layer. Ce code inclut l’intégration au contrôleur de vibrations, à l’accéléromètre, au gyroscope, au microphone et au haut-parleur (qui rejoignent la reconnaissance et la synthèse vocales), à la (géo)localisation et aux modalités d’entrée telles que l’écran tactile, la souris, le clavier et le stylet.This code includes integration with the vibration controller, accelerometer, gyroscope, microphone and speaker (which intersect with speech recognition and synthesis), (geo)location, and input modalities such as touch, mouse, keyboard, and pen.

Cycle de vie des applications (gestion de la durée de vie des processus)Application lifecycle (process lifetime management)

Dans le cas d’une application 8.1 universelle, il existe une « fenêtre de réponse » de deux secondes entre le moment où l’application devient inactive et le moment où le système déclenche l’événement de suspension.For a Universal 8.1 app, there is a two-second "debounce window" of time between the app becoming inactive and the system raising the suspending event. L’utilisation de cette fenêtre de réponse comme délai supplémentaire pour suspendre l’état est peu sûre. Par ailleurs, dans le cas d’une application pour la plateforme Windows universelle (UWP), il n’existe pas de telle fenêtre ; l’événement de suspension est déclenché dès que l’application devient inactive.Using this debounce window as extra time to suspend state is unsafe, and for a Universal Windows Platform (UWP) app, there is no debounce window at all; the suspension event is raised as soon as an app becomes inactive.

Pour plus d’informations, consultez cycle de vie des applications.For more info, see App lifecycle.

Contenu audio en arrière-planBackground audio

Dans le cas de la propriété MediaElement.AudioCategory, les valeurs ForegroundOnlyMedia et BackgroundCapableMedia sont déconseillées pour les applications Windows 10.For the MediaElement.AudioCategory property, ForegroundOnlyMedia and BackgroundCapableMedia are deprecated for Windows 10 apps. Utilisez plutôt le modèle d’application du Windows Phone Store.Use the Windows Phone Store app model instead. Pour plus d’informations, voir Contenu audio en arrière-plan.For more information, see Background Audio.

Détection de la plateforme d’exécution de votre applicationDetecting the platform your app is running on

La façon d’envisager le ciblage d’application change avec Windows 10.The way of thinking about app-targeting changes with Windows 10. Selon le nouveau modèle conceptuel, une application cible la plateforme Windows universelle (UWP) et s’exécute sur tous les appareils Windows.The new conceptual model is that an app targets the Universal Windows Platform (UWP) and runs across all Windows devices. Elle peut ensuite choisir d’activer des fonctionnalités exclusives à certaines familles d’appareils.It can then opt to light up features that are exclusive to particular device families. Si nécessaire, l’application a également la possibilité de restreindre son ciblage à une ou plusieurs familles d’appareils spécifiques.If needed, the app also has the option to limit itself to targeting one or more device families specifically. Pour plus d’informations sur les familles d’appareils et savoir comment déterminer les familles d’appareils à cibler, voir le Guide des applications UWP.For more info on what device families are—and how to decide which device family to target—see Guide to UWP apps.

Si votre application 8.1 universelle intègre du code qui détecte le système d’exploitation sur lequel elle est exécutée, vous devrez peut-être changer cela en fonction de la raison de la logique.If you have code in your Universal 8.1 app that detects what operating system it is running on, then you may need to change that depending on the reason for the logic. Si l’application transmet la valeur et n’intervient pas en conséquence, il peut être préférable de continuer à collecter les informations sur le système d’exploitation.If the app is passing the value through, and not acting on it, then you may want to continue to collect the operating system info.

Remarque    Nous vous recommandons de ne pas utiliser le système d’exploitation ou la famille d’appareils pour détecter la présence de fonctionnalités.Note   We recommend that you not use operating system or device family to detect the presence of features. En règle générale, l’identification de la famille d’appareils ou du système d’exploitation actuel ne constitue pas le meilleur moyen de déterminer si une fonctionnalité particulière du système d’exploitation ou de la famille d’appareils est présente.Identifying the current operating system or device family is usually not the best way to determine whether a particular operating system or device family feature is present. Plutôt que de détecter le système d’exploitation ou la famille d’appareils (et le numéro de version), vérifiez directement la présence de la fonctionnalité à l’aide d’un test (voir Compilation conditionnelle et code adaptatif).Rather than detecting the operating system or device family (and version number), test for the presence of the feature itself (see Conditional compilation, and adaptive code). Si vous devez exiger un système d’exploitation ou une famille d’appareils spécifique, veillez à l’utiliser comme une version minimale prise en charge plutôt que de concevoir le test pour cette version particulière.If you must require a particular operating system or device family, be sure to use it as a minimum supported version, rather than design the test for that one version.

 

Pour adapter l’interface utilisateur à différents appareils, plusieurs techniques sont recommandées.To tailor your app's UI to different devices, there are several techniques that we recommend. Continuez à utiliser les éléments à dimensionnement automatique et les panneaux à disposition dynamique que vous utilisez depuis toujours.Continue to use auto-sized elements and dynamic layout panels as you always have. Dans le balisage XAML, continuez à utiliser les tailles en pixels effectifs (auparavant appelés « pixels d’affichage ») afin que votre interface utilisateur s’adapte à différentes résolutions et différents facteurs d’échelle (voir Pixels effectifs, distance d’affichage et facteurs d’échelle).In your XAML markup, continue to use sizes in effective pixels (formerly view pixels) so that your UI adapts to different resolutions and scale factors (see Effective pixels, viewing distance, and scale factors.). Utilisez également les déclencheurs adaptatifs et les méthodes setter du Gestionnaire d’état visuel pour adapter votre interface utilisateur à la taille de la fenêtre (voir le Guide des applications UWP).And use Visual State Manager's adaptive triggers and setters to adapt your UI to the window size (see Guide to UWP apps.).

Toutefois, si l’un de vos scénarios implique nécessairement la détection de la famille d’appareils, vous pouvez mettre celle-ci en œuvre.However, if you have a scenario where it is unavoidable to detect the device family, then you can do that. Dans cet exemple, nous utilisons la classe AnalyticsVersionInfo pour accéder à une page adaptée à la famille de périphériques mobiles, le cas échéant, et nous nous assurons de revenir à une page par défaut.In this example, we use the AnalyticsVersionInfo class to navigate to a page tailored for the mobile device family where appropriate, and we make sure to fall back to a default page otherwise.

   if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
        rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
    else
        rootFrame.Navigate(typeof(MainPage), e.Arguments);

Votre application peut également déterminer la famille d’appareils sur laquelle elle est exécutée à partir des facteurs de sélection de ressources en vigueur.Your app can also determine the device family that it is running on from the resource selection factors that are in effect. L’exemple ci-dessous montre comment effectuer cette opération de manière impérative, et la rubrique ResourceContext. QualifierValues décrit le cas d’usage plus courant pour la classe dans le chargement de ressources spécifiques à la famille d’appareils en fonction du facteur de famille d’appareils.The example below shows how to do this imperatively, and the ResourceContext.QualifierValues topic describes the more typical use case for the class in loading device family-specific resources based on the device family factor.

var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);

Voir également Compilation conditionnelle et code adaptatif.Also, see Conditional compilation, and adaptive code.

EmplacementLocation

Lorsqu’une application déclarant la fonctionnalité de localisation dans son manifeste de package d’application s’exécute sur Windows 10, le système demande le consentement de l’utilisateur final.When an app that declares the Location capability in its app package manifest runs on Windows 10, the system will prompt the end-user for consent. Ceci s’applique aux applications du Windows Phone Store ou aux applications Windows 10.This is true whether the app is a Windows Phone Store app or a Windows 10 app. Si votre application affiche sa propre invite de consentement personnalisée ou qu’elle fournit une bascule de type activation/désactivation, vous devrez donc supprimer ces éléments pour que l’utilisateur final ne soit invité qu’une seule fois à autoriser cette fonctionnalité.So, if your app displays its own custom consent prompt, or if it provides an on-off toggle, then you will want to remove that so that the end-user is only prompted once.