Top 5 APIs in Xamarin Essentials you didn’t know about

If you are familiar with Xamarin Essentials and want to get right into the totally not clickbait list you can click right here.

Xamarin Essentials provides developers with cross platform access to a plethora of commonly used features and native APIs. At the moment of writing there are 29 apis and growing. Some of these features used to be pretty annoying to setup but now you don’t have to do any of that and can just focus on the business logic of your application. The best part is that if you don’t use a feature it won’t be included after compiling so there is no fear of fat output files.

Xamarin.Essentials supports the following platforms and operating systems:

Platform Version
Android 4.4 (API 19) or higher
iOS 10.0 or higher
UWP 10.0.16299.0 or higher

The setup is pretty clearly explained here and since version 1.0 of Xamarin Essentials the package comes included in every new Xamarin Forms project. That being the case, not taking advantage of it may be a huge mistake and can lead to sadness induced by lack of sleep or frustration.

To avoid some people from suffering of sleep deprivation I have compiled this list of 5 obscure features you can get access to using Xamarin Essentials right out of the gate.

But first…

I will not cover these features in depth, however I will include a gist for each one and a github repository with an example running all together.

Most of these features are not available in all devices and Xamarin Essentials will raise a FeatureNotSupportedException when you try to access a feature that is not supported by your device. You can use services like GSMArena to check the range of devices that have certain feature available.

Android Emulatiors have a very good tool to play with sensor values, so if your physical device doesn’t include on of these features you can always use that tool.

The relative position sensors screenon Android emulator
Other sensor measurements on Android emulator

When working with sensors features on Xamarin Essentials you will probably notice the following:

  • All sensors can be accessed by name
  • Every sensor can be Started and Stopped
  • There is a property to check if we are currently measuring it called IsMonitoring, we have to check it before starting the sensor because if we don’t we will raise an exception.
  • The speed for monitoring changes
  • A ReadingChanged event

Let’s get started

1. The barometer

There is no shame to admit it, I just learned what a barometer was for writing this post. A barometer is an instrument used for measuring atmospheric pressure, used especially in forecasting the weather and determining altitude. Here is a list of devices with this hardware feature included.

2. The Gyroscope

The gyroscope sensor let’s you check the rotation of the device among the three axes X, Y and Z. You can subscribe to the reading change event and respond to the rotation change. The rotation value is calculated against a delta so if the device is still this value should remain 0 but, because the earth is always vibrating. This value is always changing ever so little which you need to take this into consideration when using it.

Have you seen an app that moves when you move? Like say Pokemon Go or other AR games. Those apps use the gyroscope sensor to calculate where you are in relation to other things.

3 . The Magnetometer

This one is more or less like the gyroscope but it calculates the device’s orientation relative to Earth’s magnetic field.

4. Geocoding

Not to be confused with Geolocation this one is pretty cool and quite useful. The Geocoding API let’s you convert a placemark (that is a place address in plain text) to a positional coordinate (latitudes and longitudes) and reverse geocode coordinates to a placemark.

5. Shake detection / Accelerometer

You probably already know that most devices have an Accelerometer built in and as expected Xamarin Essentials does include an Accelerometer class, what you probably didn’t know is that Xamarin Essentials implementation can also let you register an event handler for when the user shakes the device. Let’s take a look:

And that’s about it for now. I’ll leave with a reminder that Xamarin Essentials is an Open Source project and it is maintained by people like you and me. So I want to encourage you to go to the repository, check the issues, fork it and submit some code. Send a couple of PR’s and have fun with the features we have already.

Top 5 APIs de Xamarin Essentials que no has usado

Xamarin Essentials proporciona acceso multiplataforma a una gran cantidad de funciones de uso común y API nativas. En el momento de escribir hay 29 apis y el número sigue creciendo. Algunas de estas funciones solían ser bastante incómodas para configurar, pero ahora no hay que hacer nada de eso y podemos concentrarnos en la lógica de negocios de nuestra aplicación. La mejor parte es que si no usas una característica, no se incluirá después de la compilación, por lo que no hay que preocuparse de archivos super grandes.

Xamarin.Essentials soporta las siguientes plataformas y sistemas operativos:

Plataforma Versión
Android 4.4 (API 19) o superior
iOS 10.0 o superior
UWP 10.0.16299.0 o superior

La configuración se explica claramente aquí y en la versión 1.0 de Xamarin Essentials, el paquete viene incluido en cada nuevo proyecto de Xamarin Forms. Siendo ese el caso, no aprovecharlo puede ser un gran error y puede llevar a un severo caso de tristeza inducida por la falta de sueño y frustración.

Para ayudar a evitar situaciones indeseadas, he compilado esta lista de 5 características desconocidas a las que puede acceder para utilizar Xamarin Essentials directamente desde el principio.

Pero primero…

No cubriré estas características en profundidad, sin embargo, incluiré un resumen para cada una y un repositorio de github con un ejemplo que tiene todo el código junto.

Muchas de estas funciones no están disponibles en todos los dispositivos. Xamarin Essentials lanzará una excepción FeatureNotSupportedException cuando intentes acceder a una función que no sea compatible con tu dispositivo. Puedes usar servicios como GSMArena para verificar la gama de dispositivos que tienen ciertas funciones disponibles.

Los emuladores de Android tienen una muy buena herramienta para jugar con los valores de los sensores, por lo que si su dispositivo físico no incluye una de estas características, siempre puede usar esa herramienta.

La pantalla de sensores de posición relativa en el emulador de Android.
Otras mediciones de sensores en el emulador de Android

Trabajando con las características de los sensores en Xamarin Essentials, probablemente notarás lo siguiente:

  • Se puede acceder a todos los sensores por nombre.
  • Cada sensor puede ser iniciado y detenido.
  • Hay una propiedad para verificar si actualmente estamos midiendo lo que se llama IsMonitoring, tenemos que verificarlo antes de iniciar el sensor porque, si no lo hacemos, generaremos una excepción.
  • La velocidad para monitorear los cambios.
  • Un evento de ReadingChanged que se llama cuando una medida del sensor cambia

Vamos a comenzar

1. El barómetro

No hay vergüenza de admitirlo, acabo de enterarme de lo que era un barómetro para escribir esta publicación. Un barómetro es un instrumento que se usa para medir la presión atmosférica, y se usa especialmente para pronosticar el clima y determinar la altitud. Aquí hay una lista de dispositivos con esta característica de hardware incluida.

2. El Giroscopio

El sensor del giroscopio le permite verificar la rotación del dispositivo entre los tres ejes X, Y & Z. Puedes suscribirte al evento de cambio de lectura y responder al cambio de rotación. El valor de rotación se calcula de nuevo en un delta, por lo que si el dispositivo sigue siendo este, el valor seguirá siendo 0 pero, debido a que la Tierra siempre está vibrando, este valor siempre está cambiando un poco, por lo que debes tenerlo en cuenta al usarlo.

¿Has visto una aplicación que se mueve cuando te mueves? Como Pokemon Go u otros juegos de AR. Esas aplicaciones utilizan el sensor de giroscopio para calcular dónde te encuentras en relación con otras cosas.

3 . El Magnetómetros

Este es más o menos como el giroscopio, pero calcula la orientación del dispositivo en relación con el campo magnético de la Tierra.

4. Geocodificación

No debe confundirse con la geolocalización. Este es bastante bueno y muy útil. La API de geocodificación te permite convertir una marca de posición (que es una dirección de lugar) en una coordenada posicional (latitudes y longitudes) e invertir las coordenadas en una marca de posición.

5. Detección de sacudida / Acelerómetro

Probablemente ya sepas que la mayoría de los dispositivos tienen un Acelerómetro incorporado y, como era de esperar, Xamarin Essentials incluye una clase para manejar el Acelerómetro. Lo que probablemente no sabías es que la implementación de Xamarin Essentials también te permite registrar un evento para cuando el usuario sacude el dispositivo . Vamos a ver:

Y eso es todo por ahora. Me voy con un recordatorio de que Xamarin Essentials es un proyecto de código abierto y es mantenido por personas como usted y yo. Por lo tanto, quiero alentarte a que vayas al repositorio en github, revises la pestaña de issues, lo forkees y envíes algún código. Envía un par de Pull Requests y diviértete con las características que hay disponibles.