Xamarin.Essentials:Acelerômetro

A classe Accelerometer permite monitorar o sensor de acelerômetro do dispositivo, que indica a aceleração do dispositivo no espaço tridimensional.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Uso do acelerômetro

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

A funcionalidade do Acelerômetro chama os métodos Start e Stop e escuta as alterações na aceleração. Todas as alterações são enviadas de volta por meio do evento ReadingChanged. Veja um exemplo de uso:


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.
        }
    }
}

As leituras do acelerômetro são registradas em G. A G, uma unidade de força gravitacional equivalente à exercida pelo campo gravitacional da Terra (9,81 m/s2).

O sistema de coordenadas é definido em relação à tela do telefone na orientação padrão. Os eixos não são trocados quando a orientação da tela do dispositivo é alterada.

O eixo X é horizontal e aponta para a direita; o eixo Y é vertical e aponta para cima; o eixo Z aponta para a parte externa da face frontal da tela. Nesse sistema, as coordenadas atrás da tela têm valores de Z negativos.

Exemplos:

  • Quando o dispositivo estiver em uma superfície plana e for empurrado da esquerda para a direita, o valor de aceleração x será positivo.

  • Quando o dispositivo está plano sobre uma mesa, o valor de aceleração é +1,00 G ou (+9,81 m/s^2), que corresponde à aceleração do dispositivo (0 m/s^2) menos a força da gravidade (-9,81 m/s^2) e normalizado como em G.

  • Quando o dispositivo estiver em uma superfície plana e for empurrado para cima com uma aceleração de A m/s^2, o valor da aceleração será igual a A + 9,81, o que corresponde à aceleração do dispositivo (+A m/s^2) menos a força da gravidade (-9,81 m/s^2) e normalizado em G.

Sensor de velocidade

  • Mais rápido – obtenha os dados do sensor o mais rápido possível (não é garantido retornar no thread de interface do usuário).
  • Jogo – taxa adequada para jogos (não é garantido retornar no thread de interface do usuário).
  • Padrão – Taxa padrão adequada para alterações na orientação da tela.
  • Interface do usuário – taxa adequada para a interface do usuário geral.

Se o manipulador de eventos não tiver a garantia de ser executado no thread da interface do usuário e se precisar acessar os elementos de interface do usuário, use o método MainThread.BeginInvokeOnMainThread para executar esse código no thread da interface do usuário.

API

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.