Xamarin.Essentials:Giroscopio
La classe Gyroscope consente di monitorare il sensore del giroscopio del dispositivo, ovvero la rotazione intorno ai tre assi primari del dispositivo.
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 di Gyroscope
Aggiungere un riferimento a Xamarin.Essentials nella classe :
using Xamarin.Essentials;
La funzionalità Gyroscope opera chiamando i metodi Start
e Stop
per attivare l'ascolto dei cambi del giroscopio. Le eventuali modifiche vengono inviate tramite l'evento ReadingChanged
in rad/s. Utilizzo di esempio:
public class GyroscopeTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public GyroscopeTest()
{
// Register for reading changes.
Gyroscope.ReadingChanged += Gyroscope_ReadingChanged;
}
void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
var data = e.Reading;
// Process Angular Velocity X, Y, and Z reported in rad/s
Console.WriteLine($"Reading: X: {data.AngularVelocity.X}, Y: {data.AngularVelocity.Y}, Z: {data.AngularVelocity.Z}");
}
public void ToggleGyroscope()
{
try
{
if (Gyroscope.IsMonitoring)
Gyroscope.Stop();
else
Gyroscope.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
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.