Fonctionnalités Android Pie

Comment commencer à développer des applications pour Android 9 Pie à l’aide de Xamarin.Android.

Android 9 Pie est désormais disponible sur Google. Un certain nombre de nouvelles fonctionnalités et API sont mises à disposition dans cette version, et un grand nombre d’entre elles sont nécessaires pour tirer parti des nouvelles fonctionnalités matérielles des derniers appareils Android.

Image de héros Android Pie

Cet article est structuré pour vous aider à commencer à développer des applications Xamarin.Android pour Android Pie. Il explique comment installer les mises à jour nécessaires, configurer le Kit de développement logiciel (SDK) et préparer un émulateur ou un appareil pour le test. Il fournit également un aperçu des nouvelles fonctionnalités d’Android Pie et fournit des exemples de code source qui illustrent comment utiliser certaines des principales fonctionnalités d’Android Pie.

Xamarin.Android 9.0 prend en charge Android Pie. Pour plus d’informations sur la prise en charge de Xamarin.Android pour Android Pie, consultez les notes de publication d’Android P Developer Preview 3 .

Spécifications

La liste suivante est requise pour utiliser les fonctionnalités Android Pie dans les applications basées sur Xamarin :

  • Visual Studio : Visual Studio 2019 est recommandé. Si vous utilisez Visual Studio 2017, sur Windows Update vers Visual Studio 2017 version 15.8 ou ultérieure. Sur macOS, mettez à jour vers Visual Studio 2017 pour Mac version 7.6 ou ultérieure.

  • Xamarin.Android : Xamarin.Android 9.0.0.17 ou version ultérieure doit être installé avec Visual Studio (Xamarin.Android est automatiquement installé dans le cadre de la charge de travail Développement mobile avec .NET ).

  • Kit de développement Java : le développement Xamarin Android 9.0 nécessite le JDK 8 (ou vous pouvez essayer la préversion de la distribution d’OpenJDK par Microsoft). JDK8 est automatiquement installé dans le cadre de la charge de travail Développement mobile avec .NET .

  • Sdk Android : l’API android SDK 28 ou ultérieure doit être installée via le Gestionnaire du SDK Android.

Prise en main

Pour commencer à développer des applications Android Pie avec Xamarin.Android, vous devez télécharger et installer les derniers outils et packages sdk avant de pouvoir créer votre premier projet Android Pie :

  1. Visual Studio 2019 est recommandé. Si vous utilisez Visual Studio 2017, mettez à jour vers Visual Studio 2017 version 15.8 ou ultérieure. Si vous utilisez Visual Studio pour Mac, mettez à jour vers Visual Studio 2017 pour Mac version 7.6 ou ultérieure.

  2. Installez les packages et les outils Android Pie (API 28) via le Gestionnaire du SDK.

  3. Créez un projet Xamarin.Android qui cible Android 9.0.

  4. Configurez un émulateur ou un appareil pour tester des applications Android Pie.

Chacune de ces étapes est expliquée dans les sections suivantes :

Mettre à jour Visual Studio 2017

Visual Studio 2019 est recommandé pour la création d’applications Android Pie à l’aide de Xamarin.

Si vous utilisez Visual Studio 2017, effectuez une mise à jour vers Visual Studio 2017 version 15.8 ou ultérieure (pour obtenir des instructions, voir Mettre à jour Visual Studio 2017 vers la version la plus récente). Sur macOS, effectuez une mise à jour vers Visual Studio 2017 pour Mac 7.6 ou version ultérieure (pour obtenir des instructions, voir Configurer et installer Visual Studio pour Mac).

Installer le Kit de développement logiciel (SDK) Android

Pour créer un projet avec Xamarin.Android 9.0, vous devez d’abord utiliser le Gestionnaire du SDK Android pour installer la plateforme sdk pour Android Pie (niveau d’API 28) ou version ultérieure.

  1. Démarrez le Gestionnaire du Kit de développement logiciel (SDK). Dans Visual Studio, cliquez sur Outils Gestionnaire > android du SDK Android>. Dans Visual Studio pour Mac, cliquez sur Outils > Gestionnaire du SDK.

  2. Dans le coin inférieur droit, cliquez sur l’icône d’engrenage et sélectionnez Dépôt > Google (non pris en charge) :

    Définition du dépôt sur Google

  3. Installez les packages du SDK Android Pie , qui sont répertoriés sous la forme Android SDK Platform 28 sous l’onglet Plateformes (pour plus d’informations sur l’utilisation du Gestionnaire de SDK, consultez Configuration du SDK Android) :

    Installation de packages Android Pie

  4. Si vous utilisez un émulateur, créez un appareil virtuel qui prend en charge le niveau d’API 28. Pour plus d’informations sur la création d’appareils virtuels, consultez Gestion des appareils virtuels avec le Gestionnaire de périphériques Android.

Démarrer un projet Xamarin.Android

Créez un projet Xamarin.Android. Si vous débutez avec le développement Android avec Xamarin, consultez Hello, Android pour en savoir plus sur la création de projets Xamarin.Android.

Lorsque vous créez un projet Android, vous devez configurer les paramètres de version pour cibler Android 9.0 ou version ultérieure. Par exemple, pour cibler votre projet pour Android Pie, vous devez configurer le niveau d’API Android cible de votre projet sur Android 9.0 (API 28). Il est recommandé de définir également votre niveau d’infrastructure cible sur API 28 ou version ultérieure. Pour plus d’informations sur la configuration des niveaux d’API Android, consultez Présentation des niveaux d’API Android.

Configurer un appareil ou un émulateur

Si vous utilisez un appareil physique tel qu’un Nexus ou un Pixel, vous pouvez mettre à jour votre appareil vers Android Pie en suivant les instructions fournies dans Images d’usine pour les appareils Nexus et Pixel.

Si vous utilisez un émulateur, créez un appareil virtuel pour le niveau d’API 28 et sélectionnez une image x86. Pour plus d’informations sur l’utilisation de l’Gestionnaire de périphériques Android pour créer et gérer des appareils virtuels, consultez Gestion des appareils virtuels avec le Gestionnaire de périphériques Android. Pour plus d’informations sur l’utilisation de l’émulateur Android à des fins de test et de débogage, consultez Débogage sur l’émulateur Android.

Nouvelles fonctionnalités

Android Pie introduit une variété de nouvelles fonctionnalités. Certaines de ces nouvelles fonctionnalités sont destinées à tirer parti des nouvelles fonctionnalités matérielles offertes par les derniers appareils Android, tandis que d’autres sont conçues pour améliorer davantage l’expérience utilisateur Android :

  • Prise en charge de la découpe d’affichage : fournit des API pour rechercher l’emplacement et la forme de la découpe en haut de l’écran sur les appareils Android plus récents.

  • Améliorations apportées aux notifications : les messages de notification peuvent désormais afficher des images, et une nouvelle Person classe est utilisée pour simplifier les participants à la conversation.

  • Positionnement intérieur : prise en charge de la plateforme pour le protocole WiFi aller-retour-temps, qui permet aux applications d’utiliser des appareils Wi-Fi pour la navigation dans les paramètres intérieurs.

  • Prise en charge de plusieurs caméras : offre la possibilité d’accéder simultanément aux flux à partir de plusieurs caméras physiques (telles que les caméras double avant et double arrière).

Les sections suivantes mettent en évidence ces fonctionnalités et fournissent de brefs exemples de code pour vous aider à les utiliser dans votre application.

Prise en charge du découpage d’affichage

De nombreux appareils Android plus récents avec des écrans bord à bord ont un découpage d’affichage (ou « encoche ») en haut de l’écran pour l’appareil photo et le haut-parleur. La capture d’écran suivante fournit un exemple d’émulateur de découpage :

Émulateur Android simulant une découpe

Pour gérer la façon dont votre fenêtre d’application affiche son contenu sur les appareils avec une découpe d’affichage, Android Pie a ajouté un nouvel attribut de disposition de fenêtre LayoutInDisplayCutoutMode . Cet attribut peut être défini sur l’une des valeurs suivantes :

Par exemple, pour empêcher la fenêtre d’application de se chevaucher avec la zone de découpage, définissez le mode de découpage de disposition sur jamais :

Window.Attributes.LayoutInDisplayCutoutMode =
    Android.Views.LayoutInDisplayCutoutMode.Never;

Les exemples suivants fournissent des exemples de ces modes de découpage. La première capture d’écran à gauche est celle de l’application en mode non plein écran. Dans la capture d’écran centrale, l’application passe en plein écran avec LayoutInDisplayCutoutMode défini sur LayoutInDisplayCutoutModeShortEdges. Notez que l’arrière-plan blanc de l’application s’étend dans la zone de découpage d’affichage :

Exemples de modes de découpage d’affichage dans l’émulateur

Dans la dernière capture d’écran (ci-dessus à droite), LayoutInDisplayCutoutMode est défini LayoutInDisplayCutoutModeShortNever sur avant de passer en mode plein écran. Notez que l’arrière-plan blanc de l’application n’est pas autorisé à s’étendre dans la zone de découpage d’affichage.

Si vous avez besoin d’informations plus détaillées sur la zone de découpage sur l’appareil, vous pouvez utiliser la nouvelle classe DisplayCutout . DisplayCutout représente la zone de l’affichage qui ne peut pas être utilisée pour afficher du contenu. Vous pouvez utiliser ces informations pour récupérer l’emplacement et la forme de la découpe afin que votre application ne tente pas d’afficher du contenu dans cette zone non fonctionnelle.

Pour plus d’informations sur les nouvelles fonctionnalités de découpage dans Android P, consultez Prise en charge de la découpe d’affichage.

Améliorations apportées aux notifications

Android Pie introduit les améliorations suivantes pour améliorer l’expérience de messagerie :

  • Les canaux de notification (introduits dans Android Oreo) prennent désormais en charge le blocage des groupes de canaux.

  • Le système de notification comporte trois nouvelles catégories Ne pas déranger (hiérarchisation des alarmes, des sons système et des sources multimédias). En outre, il existe sept nouveaux modes Ne pas déranger qui peuvent être utilisés pour supprimer les interruptions visuelles (comme les badges, les voyants de notification, les apparences de barre de status et le lancement d’activités en plein écran).

  • Une nouvelle classe Person a été ajoutée pour représenter l’expéditeur d’un message. L’utilisation de cette classe permet d’optimiser le rendu de chaque notification en identifiant les personnes impliquées dans une conversation (y compris leurs avatars et URI).

  • Les notifications peuvent désormais afficher des images.

L’exemple suivant montre comment utiliser les nouvelles API pour générer une notification qui contient une image. Dans les captures d’écran suivantes, une notification texte est publiée et est suivie d’une notification avec une image incorporée. Lorsque les notifications sont développées (comme indiqué à droite), le texte de la première notification s’affiche et l’image incorporée dans la deuxième notification est agrandie :

Exemple de notification avec image

L’exemple suivant montre comment inclure une image dans une notification Android Pie et illustre l’utilisation de la nouvelle Person classe :

  1. Créez un Person objet qui représente l’expéditeur. Par exemple, le nom et l’icône de l’expéditeur sont inclus dans fromPerson:

    Icon senderIcon = Icon.CreateWithResource(this, Resource.Drawable.sender_icon);
    Person fromPerson = new Person.Builder()
        .SetIcon(senderIcon)
        .SetName("Mark Sender")
        .Build();
    
  2. Créez un Notification.MessagingStyle.Message qui contient l’image à envoyer, en passant l’image à la nouvelle méthode Notification.MessagingStyle.Message.SetData . Par exemple :

    Uri imageUri = Uri.Parse("android.resource://com.xamarin.pminidemo/drawable/example_image");
    Notification.MessagingStyle.Message message = new Notification.MessagingStyle
            .Message("Here's a picture of where I'm currently standing", 0, fromPerson)
            .SetData("image/", imageUri);
    
  3. Ajoutez le message à un Notification.MessagingStyle objet . Par exemple :

    Notification.MessagingStyle style = new Notification.MessagingStyle(fromPerson)
            .AddMessage(message);
    
  4. Branchez ce style dans le générateur de notifications. Par exemple :

    builder = new Notification.Builder(this, MY_CHANNEL)
        .SetContentTitle("Tour of the Colosseum")
        .SetContentText("I'm standing right here!")
        .SetSmallIcon(Resource.Mipmap.ic_notification)
        .SetStyle(style)
        .SetChannelId(MY_CHANNEL);
    
  5. Publiez la notification. Par exemple :

    const int notificationId = 1000;
    notificationManager.Notify(notificationId, builder.Build());
    

Pour plus d’informations sur la création de notifications, consultez Notifications locales.

Positionnement intérieur

Android Pie prend en charge ieee 802.11mc (également appelé WiFi Round-Trip Time ou WiFi RTT), ce qui permet aux applications de détecter la distance à un ou plusieurs points d’accès Wi-Fi. À l’aide de ces informations, votre application peut tirer parti du positionnement intérieur avec une précision de un à deux mètres. Sur les appareils Android qui fournissent une prise en charge matérielle pour IEEE 801.11mc, votre application peut offrir des fonctionnalités de navigation telles que le contrôle basé sur l’emplacement des appliances intelligentes ou des instructions tour par tour via un magasin :

Exemple de navigation intérieure à l’aide du Wi-Fi RTT

La nouvelle classe WifiRttManager et plusieurs classes d’assistance permettent de mesurer la distance à Wi-Fi appareils. Pour plus d’informations sur les API de positionnement intérieur introduites dans Android P, consultez Android.Net.Wifi.Rtt.

Prise en charge de plusieurs caméras

De nombreux appareils Android plus récents ont des caméras double avant et/ou double arrière qui sont utiles pour des fonctionnalités telles que la vision stéréo, les effets visuels améliorés et la capacité de zoom améliorée. Android P introduit une nouvelle API Multi-Camera qui permet à votre application d’utiliser une caméra logique (ou plusieurs caméras logiques) qui est soutenue par deux caméras physiques ou plus. Pour déterminer si l’appareil prend en charge une caméra multi-caméra logique, vous pouvez examiner les fonctionnalités de chaque caméra sur l’appareil pour voir s’il prend en charge RequestAvailableCapabilitiesLogicalMultiCamera.

Android Pie inclut également une nouvelle classe SessionConfiguration qui peut être utilisée pour réduire les retards pendant la capture initiale et éliminer la nécessité de démarrer et de démarrer le flux d’appareil photo.

Pour plus d’informations sur la prise en charge de la multi-caméra dans Android P, consultez Prise en charge de la multi-caméra et mises à jour de la caméra.

Autres fonctionnalités

En outre, Android Pie prend en charge plusieurs autres nouvelles fonctionnalités :

  • La nouvelle classe AnimatedImageDrawable , qui peut être utilisée pour dessiner et afficher des images animées.

  • Nouvelle classe ImageDecoder qui remplace BitmapFactory. ImageDecoder peut être utilisé pour décoder un AnimatedImageDrawable.

  • Prise en charge des images vidéo HDR (Plage dynamique élevée) et HEIF (High Efficiency Image File Format).

  • JobScheduler a été amélioré pour gérer plus intelligemment les travaux liés au réseau. La nouvelle méthode GetNetwork de la classe JobParameters retourne le meilleur réseau pour effectuer toutes les demandes réseau pour un travail donné.

Pour plus d’informations sur les dernières fonctionnalités d’Android Pie, consultez Fonctionnalités et API Android 9.

Changements de comportement

Lorsque la version d’Android cible est définie sur le niveau d’API 28, plusieurs modifications de plateforme peuvent affecter le comportement de votre application même si vous n’implémentez pas les nouvelles fonctionnalités décrites ci-dessus. La liste suivante est un bref résumé de ces modifications :

  • Les applications doivent maintenant demander l’autorisation de premier plan avant d’utiliser les services de premier plan.

  • Si votre application a plusieurs processus, elle ne peut pas partager un seul répertoire de données WebView entre les processus.

  • L’accès direct au répertoire de données d’une autre application par chemin d’accès n’est plus autorisé.

Pour plus d’informations sur les changements de comportement pour les applications ciblant Android P, consultez Modifications de comportement.

Exemple de code

AndroidPMiniDemo est un exemple d’application Xamarin.Android pour Android Pie qui montre comment définir des modes de découpage d’affichage, comment utiliser la nouvelle Person classe et comment envoyer une notification incluant une image.

Résumé

Cet article a présenté Android Pie et expliqué comment installer et configurer les derniers outils et packages pour le développement Xamarin.Android avec Android Pie. Il a fourni une vue d’ensemble des principales fonctionnalités disponibles dans Android Pie, avec un exemple de code source pour plusieurs de ces fonctionnalités. Il comprenait des liens vers la documentation sur les API et des rubriques sur les développeurs Android pour vous aider à commencer à créer des applications pour Android Pie. Il a également mis en évidence les changements de comportement Android Pie les plus importants susceptibles d’avoir un impact sur les applications existantes.