Xamarin.Essentials: AcelerómetroXamarin.Essentials: Accelerometer

La clase Accelerometer permite supervisar el sensor del acelerómetro del dispositivo, que indica la aceleración del dispositivo en un espacio tridimensional.The Accelerometer class lets you monitor the device's accelerometer sensor, which indicates the acceleration of the device in three-dimensional space.

Primeros pasosGet started

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Uso de AccelerometerUsing Accelerometer

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

La funcionalidad Accelerometer funciona mediante una llamada a los métodos Start y Stop para realizar escuchas de los cambios realizados en la aceleración.The Accelerometer functionality works by calling the Start and Stop methods to listen for changes to the acceleration. Los cambios se enviarán a través del evento ReadingChanged.Any changes are sent back through the ReadingChanged event. A continuación le mostramos un ejemplo de uso:Here is sample usage:


public class AccelerometerTest
{
    // Set speed delay for monitoring changes.
    SensorSpeed speed = SensorSpeed.UI;

    public AccelerometerTest()
    {
        // Register for reading changes, be sure to unsubscribe when finished
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
    }

    void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
    {
        var data = e.Reading;
        Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
        // Process Acceleration X, Y, and Z
    }

    public void ToggleAccelerometer()
    {
        try
        {
            if (Accelerometer.IsMonitoring)
              Accelerometer.Stop();
            else
              Accelerometer.Start(speed);
        }
        catch (FeatureNotSupportedException fnsEx)
        {
            // Feature not supported on device
        }
        catch (Exception ex)
        {
            // Other error has occurred.
        }
    }
}

Las lecturas del acelerómetro se notifican en G. La G es una unidad de fuerza gravitacional igual a la ejercida por el campo gravitatorio de la Tierra (9,81 m/s^2).Accelerometer readings are reported back in G. A G is a unit of gravitation force equal to that exerted by the earth's gravitational field (9.81 m/s^2).

El sistema de coordenadas se define con respecto a la pantalla del teléfono en orientación predeterminada.The coordinate-system is defined relative to the screen of the phone in its default orientation. Cuando cambia la orientación de pantalla del dispositivo no se intercambian los ejes.The axes are not swapped when the device's screen orientation changes.

El eje X es horizontal y apunta a la derecha, el eje Y es vertical y apunta hacia arriba, y el eje Z apunta hacia el exterior de la parte frontal de la pantalla.The X axis is horizontal and points to the right, the Y axis is vertical and points up and the Z axis points towards the outside of the front face of the screen. En este sistema, las coordenadas de detrás de la pantalla tienen valores de Z negativo.In this system, coordinates behind the screen have negative Z values.

Ejemplos:Examples:

  • Cuando el dispositivo se encuentra plano sobre una mesa y se mueve desde el lado izquierdo hacia la derecha, el valor de aceleración de X es positivo.When the device lies flat on a table and is pushed on its left side toward the right, the x acceleration value is positive.

  • Cuando el dispositivo se encuentra plano sobre una mesa, el valor de aceleración es + 1,00 G o (+ 9,81 m/s^2), que corresponden a la aceleración del dispositivo (0 m/s^2) menos la fuerza de la gravedad (- 9,81 m/s^2) y normalizada en G.When the device lies flat on a table, the acceleration value is +1.00 G or (+9.81 m/s^2), which correspond to the acceleration of the device (0 m/s^2) minus the force of gravity (-9.81 m/s^2) and normalized as in G.

  • Cuando el dispositivo se encuentra plano sobre una mesa y se mueve hacia el cielo con una aceleración de A m/s^2, el valor de la aceleración es igual A + 9,81, que corresponde a la aceleración del dispositivo (+ A m/s^2) menos la fuerza de la gravedad (- 9,81 m/s^2) y normalizada en G.When the device lies flat on a table and is pushed toward the sky with an acceleration of A m/s^2, the acceleration value is equal to A+9.81 which corresponds to the acceleration of the device (+A m/s^2) minus the force of gravity (-9.81 m/s^2) and normalized in G.

Velocidad de sensorSensor Speed

  • Más rápido: obtener los datos del sensor tan rápido como sea posible (no se garantiza la devolución en el subproceso de interfaz de usuario).Fastest – Get the sensor data as fast as possible (not guaranteed to return on UI thread).
  • Juego: velocidad adecuada para juegos (no se garantiza la devolución en el subproceso de interfaz de usuario).Game – Rate suitable for games (not guaranteed to return on UI thread).
  • Normal: velocidad predeterminada adecuada para los cambios de orientación de pantalla.Normal – Default rate suitable for screen orientation changes.
  • Interfaz de usuario: velocidad adecuada para la interfaz de usuario general.UI – Rate suitable for general user interface.

Si no se garantiza la ejecución del controlador de eventos en el subproceso de interfaz de usuario y si el controlador de eventos necesita tener acceso a elementos de la interfaz de usuario, use el método MainThread.BeginInvokeOnMainThread para ejecutar ese código en el subproceso de interfaz de usuario.If your event handler is not guaranteed to run on the UI thread, and if the event handler needs to access user-interface elements, use the MainThread.BeginInvokeOnMainThread method to run that code on the UI thread.

APIAPI

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.Find more Xamarin videos on Channel 9 and YouTube.