Introduction à Xamarin Essentials

Dans cet article, nous examinons Xamarin.Essentials, la bibliothèque multiplateforme officielle de Microsoft pour accéder aux fonctionnalités natives de vos applications Xamarin.
Xamarin.Forms permet de créer une application mobile belle et fonctionnelle dès la sortie de la boîte . Tôt ou tard, cependant, vous souhaiterez accéder à certaines fonctionnalités natives de l'appareil. Vous devrez peut-être accéder à l'emplacement précis de l'appareil, ou peut-être pour détecter un tremblement de l'appareil ou ouvrir le numéroteur téléphonique.
Bien sûr, Xamarin a accès à toutes les API natives dont vous avez besoin, et il est assez simple de descendre dans code natif via Dependency Services, bien que vous ayez besoin d'une connaissance assez approfondie de la plate-forme sous-jacente pour certaines tâches.
C'est là qu'intervient Xamarin.Essentials. Il s'agit d'un package NuGet officiel de Xamarin qui vous donne accès à plus de 30 fonctionnalités à travers iOS, Android et UWP, le tout à partir de votre code C # partagé.
La mise en route de Xamarin Essentials ne pourrait pas être plus simple. Ajoutez simplement le package NuGet, ajoutez un petit code de configuration pour Android et il est prêt à être utilisé.
Xamarin.Essentials offre actuellement les fonctionnalités suivantes:
- Accelerometer: Récupérez les données d'accélération de l'appareil en trois dimensions space.
- Informations sur l'application: Pour obtenir des informations sur l'application.
- Baromètre: Surveillez le baromètre pour les changements de pression.
- Batterie: Détectez facilement le niveau, la source et l'état de la batterie .
- Presse-papiers: Définissez ou lisez rapidement et facilement du texte dans le presse-papiers.
- Convertisseurs de couleurs: Méthodes d'assistance pour System.Drawing.Color.
- Boussole: Surveillez la boussole pour les changements .
- Connectivité: Vérifiez l'état de la connectivité et détectez les changements.
- Détecter les tremblements: Détectez un mouvement de tremblement de l'appareil.
- Informations sur l'affichage de l'appareil: Obtenez les mesures et l'orientation de l'écran .
- Informations sur le périphérique: Rechercher
- E-mail: Envoyez facilement des e-mails.
- Aide au système de fichiers: Enregistrez facilement des fichiers dans les données d'application.
- Lampe de poche: Un moyen simple de changer allumer / éteindre la lampe de poche.
- Géocodage: Géocodage et inverser les adresses et coordonnées du géocodage.
- Géolocalisation: Récupérer l'emplacement GPS de l'appareil.
- Gyroscope: Suivre la rotation autour des trois appareils axes primaires.
- Lanceur: Permet à une application d'ouvrir un URI par le système.
- Magnétomètre: Détecte l'orientation de l'appareil par rapport au champ magnétique terrestre.
- MainThread: Exécutez le code sur le fil principal de l'application.
- Cartes: Ouvrez l'application Cartes vers un emplacement spécifique.
- Ouvrez le navigateur: Ouvrez rapidement et facilement un navigateur vers un site Web spécifique.
- Capteur d'orientation: ] Récupérez l'orientation de l'appareil dans un espace tridimensionnel. [19659008] Phone Dialer: Open the phone dialer.
- Platform Extensions: Helper methods for converting Rect, Size, and Point.
- Preferences: Ajoutez rapidement et facilement des préférences persistantes. [19659008] Stockage sécurisé: Stockez vos données en toute sécurité.
- Partager: Envoyez du texte et des uris de site Web à d'autres applications.
- SMS: Créez un message SMS à envoyer.
- Text-to- Voix: Vocalisez le texte sur l'appareil.
- Convertisseurs d'unités: Méthodes d'aide pour convertir les unités.
- Suivi de version: Suivez la version des applications et les numéros de build.
- Vibreur: ] Faites vibrer l'appareil.
Commençons par créer une application multiplateforme qui utilise quelques fonctionnalités de l'appareil. Ce sera une petite application de boussole pratique avec un indicateur de niveau de batterie – parfait pour démontrer quelques services multiplateformes simples.
Fichier -> Nouveau projet
Nous allons commencer par créer un nouveau projet multiplateforme Xamarin.Forms pour iOS et Android. Dans ce cas, créez simplement une nouvelle application vierge à l'aide de .NET Standard pour votre «stratégie de partage de code». Nous appellerons l'application "Lost".
Une fois le projet échafaudé prêt, cliquez avec le bouton droit de la souris sur la solution et choisissez «Gérer les packages NuGet pour la solution». Recherchez Xamarin.Essentials sous Parcourir et installez la dernière version dans tous les projets.
Gestion des autorisations
Android nécessite un petit code de configuration pour gérer les demandes d'autorisations. Toutes les fonctionnalités de Xamarin.Essentials ne l'exigent pas, mais c'est bonne pratique pour l'introduire afin que vous n'ayez pas à y revenir plus tard lorsque vous vous demandez pourquoi quelque chose ne fonctionne pas.
Premièrement, Xamarin.Essentials doit être initialisé dans OnCreate
de toute activité où il est utilisé, juste après l'appel baseOnCreate
:
base . OnCreate ( savedInstanceState ) ;
Xamarin . Essentials . Platform . Init ( this savedInstanceState ) ; [19659058] Enfin, pour gérer les autorisations d'exécution, Xamarin.Essentials doit recevoir tout OnRequestPermissionsResult
ajoutez donc ce qui suit aux classes d'activité:
public override void OnRequestPermissionsResult [19659049] ( int requestCode string [] permissions [ GeneratedEnum ] Android . Contenu . PM . Permission [] grantResults )
{
Xamarin . Essentials . Platform . OnRequestPermissionsResult ( requestCode permissions grantResults ) ;
base . OnRequestPermissionsResult ( requestCode permissions grantResults ) ;
}
Ressources
La dernière étape de la mise en place pour ce projet particulier est d'ajouter une image de rose des vents. L'application va afficher notre direction actuelle, j'ai donc créé une version rapide d'une rose des vents que nous pouvons faire pivoter plutôt que d'afficher simplement du texte. Placez l'image dans les emplacements habituels: dossiers à dessiner pour Android et ressources pour iOS. Bien sûr, pour une vraie application, vous allez vouloir créer les images correctement dimensionnées et les placer dans les différents dossiers Drawable.
Displaying Our Direction
Ouvrez MainPage.xaml et remplacez le contenu StackPanel par défaut par quelques balisage pour afficher notre boussole:
< StackLayout Margin = " 100 "
HorizontalOptions = " FillAndExpand "
VerticalOptions = " FillAndExpand " >
< Image x: Nom = " CompassRose "
Source = " compass_rose.jpg "
RotationX = " 50 " >
</ Image >
</ StackLayout >
J'en ai ajouté RotationX à l'image pour un peu de plaisir. Ceci incline l'image vers l'avant pour lui donner un aspect un peu tridimensionnel.
Dans le code-behind, nous allons ajouter du code de gestion d'événements pour le changement de direction et mettre à jour la RotationZ de l'image lorsque la direction change. Nous devons faire un calcul rapide lors de la rotation de l'image car le point est de garder N face au nord, mais c'est vraiment tout ce qu'il y a à faire.
public partial class MainPage : ContentPage
{
SensorSpeed _sensorSpeed = SensorSpeed . UI ;
public MainPage ()
{
InitializeComponent ( ) ;
Compass . ReadingChanged + = Compass_ReadingChanged ;
Compass . Start ( _sensorSpeed ) ;
}
private void Compass_ReadingChanged ( object expéditeur CompassChangedEventArgs e )
{
var data = e . Reading ; ]
CompassRose . Rotation = Convert . ToDouble ( - 1 * data . HeadingMagneticNorth ) ;
}
}
N'oubliez pas d'ajouter une instruction en utilisant
pour Xamarin.Essentials en haut de votre fichier. [19659003] Frappons F5 pour lancer l'application et voir à quoi cela ressemble!
Une fois que l'émulateur est opérationnel, ouvrez les outils étendus afin que nous puissions manipuler l'appareil en trois dimensions. Inclinez l'appareil pour qu'il apparaisse comme vous le tiendriez naturellement et vérifiez comment la rose des vents se déplace lorsque vous ajustez la rotation en Z de l'émulateur. Si nous avons raison, la boussole doit se déplacer à l'opposé de la façon dont vous faites tourner l'appareil, en gardant le N pointant vers le nord magnétique.
![The working compass "title =" The working compass "/> [19659150] Ajout d'un indicateur de niveau de batterie</h2 data-recalc-dims=](https://i0.wp.com/d585tldpucybw.cloudfront.net/sfimages/default-source/blogs/2020/2020-11/compass.gif?w=660&ssl=1)
La deuxième fonctionnalité que nous ajouterons est un simple indicateur de niveau de batterie. Mettez à jour le XAML sur MainPage.xaml pour inclure une étiquette pour l'affichage du pourcentage:
< StackLayout [19659085] Margin = " 100 "
HorizontalOptions = " FillAndExpand "
VerticalOptions = " FillAndExpand " >
< Image x: Name = " CompassRose "
Source = " compass_rose.jpg "
RotationX = " 50 " >
</ Image [19659049]>
< Libellé x: Name = " BatteryLevel "
FontSize = " Large "
FontAttributes = " Bold "
HorizontalOptions = " FillAndExpand " [19659170] HorizontalTextAlignment = " Center "
VerticalOptions = " CenterAndExpand " >
< / Label >
</ StackLayout >
Maintenant, dans le code-behind, nous nous abonnerons aux changements de niveau de batterie et mettrons à jour l'étiquette en conséquence:
Battery . BatteryInfoChanged + = Battery_BatteryInfoChanged . ] BatteryInfoChangedEv entArgs e )
{
BatteryLevel . Text = $ "{Convert.ToInt16 (e.ChargeLevel * 100)}%" ;
}
Maintenant appuyez sur F5 pour voir l'application en action et vous devriez rencontrer un petit problème.

Vous pouvez voir que l'utilisation du plugin Xamarin.Essentials ne signifie pas que nous sommes exemptés de gérer correctement les autorisations sur chacune des plates-formes. Les exceptions sont bien formulées et utiles, donc cela ne laisse pas beaucoup de doute sur ce que nous devons faire.
Cliquez avec le bouton droit sur le projet Android et ouvrez le projet properties. Sous Android Manifest, recherchez les autorisations requises et assurez-vous que l'autorisation BATTERY_STATS est sélectionnée.
Pour iOS, aucune étape supplémentaire n'est requise.
Exécutez à nouveau l'application dans l'émulateur, et vous pouvez voir que l'application surveille les changements de niveau de batterie et met à jour l'étiquette au fur et à mesure qu'ils se produisent.

Explorez le reste
Dans cet article, nous avons examiné seulement deux des nombreuses fonctionnalités implémentées dans Xamarin.Essentials et vu à quel point il est facile d'y accéder de manière complète
Consultez la documentation officielle pour obtenir tous les guides dont vous avez besoin pour implémenter des fonctionnalités à partir de code partagé dans n'importe quelle application Xamarin.Forms, iOS, Android ou UWP.
En savoir plus sur Xamarin Essentials
Vous souhaitez continuer à lire sur les fonctionnalités de Xamarin Essentials? Consultez ces guides qui vous aideront à comprendre comment utiliser et implémenter certaines fonctionnalités clés.
Source link