Xamarin.Essentials:Accelerometro
La classe Accelerometer consente di monitorare il sensore dell'accelerometro del dispositivo, che indica l'accelerazione del dispositivo nello spazio tridimensionale.
Operazioni preliminari
Per iniziare a usare questa API, leggere la guida introduttiva per Xamarin.Essentials assicurarsi che la libreria sia installata e configurata correttamente nei progetti.
Uso della classe Accelerometer
Aggiungere un riferimento a Xamarin.Essentials nella classe :
using Xamarin.Essentials;
La funzionalità Accelerometer opera chiamando i metodi Start
e Stop
per attivare l'ascolto dei cambi di accelerazione. Le eventuali modifiche vengono inviate tramite l'evento ReadingChanged
. Utilizzo di esempio:
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.
}
}
}
Le letture dell'accelerometro vengono restituite in G. G è un'unità di forza gravitazionale uguale a quella esercitata dal campo gravitazionale della terra (9,81 m/s^2).
Il sistema di coordinate viene definito in relazione allo schermo del telefono con l'orientamento predefinito. Gli assi non vengono invertiti quando cambia l'orientamento dello schermo del dispositivo.
L'asse X è orizzontale e punta verso destra, l'asse Y è verticale e punta verso l'alto e l'asse Z punta verso l'esterno rispetto alla parte frontale dello schermo. In questo sistema, le coordinate dietro lo schermo hanno valori Z negativi.
Esempi:
Quando il dispositivo è piatto su un piano e viene spinto dal lato sinistro verso destra, il valore di accelerazione x è positivo.
Quando il dispositivo si trova piatto su una tabella, il valore di accelerazione è +1,00 G o (+9,81 m/s^2), che corrisponde all'accelerazione del dispositivo (0 m/s^2) meno la forza di gravità (-9,81 m/s^2) e normalizzata come in G.
Quando il dispositivo è piatto su un piano e viene spinto verso il cielo con un'accelerazione di A m/s^2, il valore di accelerazione è uguale a A+9,81 che corrisponde all'accelerazione del dispositivo (+A m/s^2) meno la forza di gravità (-9,81 m/s^2) normalizzata in G.
Velocità del sensore
- Fastest - Ottenere i dati del sensore il più velocemente possibile (non è garantita la restituzione sul thread dell'interfaccia utente).
- Game - Velocità adatta ai giochi (non è garantita la restituzione sul thread dell'interfaccia utente).
- Impostazione predefinita: frequenza predefinita adatta alle modifiche dell'orientamento dello schermo.
- UI - Velocità adatta per l'interfaccia utente generale.
Se non è garantito che il gestore eventi venga eseguito sul thread dell'interfaccia utente e se il gestore eventi deve accedere a elementi dell'interfaccia utente, usare il metodo MainThread.BeginInvokeOnMainThread
per eseguire il codice sul thread dell'interfaccia utente.
API
Video correlato
Altri video di Xamarin sono disponibili su Channel 9 e YouTube.