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
Vídeo relacionados
Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.