Xamarin.Essentials: Detectar trepidação
A classe Accelerometer permite monitorar o sensor de acelerômetro do dispositivo, que indica a aceleração do dispositivo no espaço tridimensional. Além disso, ele permite que você se registre para eventos quando o usuário sacudir o dispositivo.
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.
Adicione uma referência a Xamarin.Essentials em sua classe:
using Xamarin.Essentials;
Para detectar um movimento do dispositivo, você deve usar a funcionalidade do acelerômetro, chamando os métodos Start
e Stop
para ouvir alterações na aceleração e detectar um movimento. Sempre que um movimento for detectado, um evento ShakeDetected
será disparado. Recomenda-se usar Game
ou mais veloz para o SensorSpeed
. Veja um exemplo de uso:
public class DetectShakeTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.Game;
public DetectShakeTest()
{
// Register for reading changes, be sure to unsubscribe when finished
Accelerometer.ShakeDetected += Accelerometer_ShakeDetected ;
}
void Accelerometer_ShakeDetected (object sender, EventArgs e)
{
// Process shake event
}
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.
}
}
}
- 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.
A API de detecção de movimento usa leituras brutas do acelerômetro para calcular a aceleração. Ela usa um mecanismo de fila simples para detectar se 3/4 dos eventos recentes do acelerômetro ocorreram na última metade do segundo. A aceleração é calculada adicionando o quadrado das leituras de X, Y e Z do acelerômetro e comparando com um limite específico.
Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.