Udostępnij za pośrednictwem


Xamarin.Essentials:Akcelerometr

Klasa Accelerometer umożliwia monitorowanie czujnika akcelerometru urządzenia, który wskazuje przyspieszenie urządzenia w przestrzeni trójwymiarowej.

Rozpocznij

Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.

Korzystanie z akcelerometru

Dodaj odwołanie do Xamarin.Essentials klasy:

using Xamarin.Essentials;

Funkcja akcelerometru działa przez wywołanie Start metod i Stop w celu nasłuchiwania zmian przyspieszenia. Wszelkie zmiany są wysyłane z powrotem za pośrednictwem ReadingChanged zdarzenia. Oto przykładowe użycie:


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

Odczyty akcelerometru są zgłaszane z powrotem w G. G jest jednostką siły grawitacyjnej równej tej wywieranej przez pole grawitacyjne ziemi (9,81 m/s^2).

Układ współrzędnych jest zdefiniowany względem ekranu telefonu w domyślnej orientacji. Osie nie są zamieniane po zmianie orientacji ekranu urządzenia.

Oś X jest pozioma i wskazuje po prawej stronie, oś Y jest pionowa i wskazuje w górę, a oś Z wskazuje na zewnątrz przedniej powierzchni ekranu. W tym systemie współrzędne za ekranem mają ujemne wartości Z.

Przykłady:

  • Gdy urządzenie znajduje się płasko na tabeli i jest wypychane po lewej stronie w kierunku prawej, wartość x przyspieszenia jest dodatnia.

  • Gdy urządzenie znajduje się płasko w tabeli, wartość przyspieszenia wynosi +1,00 G lub (+9,81 m/s^2), co odpowiada przyspieszaniu urządzenia (0 m/s^2) minus siłą grawitacji (-9,81 m/s^2) i znormalizowaną jak w G.

  • Gdy urządzenie znajduje się płasko na tabeli i jest przesuwane w kierunku nieba z przyspieszeniem M/s^2, wartość przyspieszenia jest równa A+9,81, która odpowiada przyspieszaniu urządzenia (+A m/s^2) minus siła grawitacji (-9,81 m/s^2) i znormalizowana w G.

Szybkość czujnika

  • Najszybsze — jak najszybciej pobierz dane czujnika (nie ma gwarancji powrotu do wątku interfejsu użytkownika).
  • Gra — stawka odpowiednia dla gier (nie ma gwarancji powrotu do wątku interfejsu użytkownika).
  • Ustawienie domyślne — częstotliwość domyślna odpowiednia dla zmian orientacji ekranu.
  • Interfejs użytkownika — szybkość odpowiednia dla ogólnego interfejsu użytkownika.

Jeśli program obsługi zdarzeń nie ma gwarancji, że zostanie uruchomiony w wątku interfejsu użytkownika, a program obsługi zdarzeń musi uzyskać dostęp do elementów interfejsu użytkownika, użyj MainThread.BeginInvokeOnMainThread metody , aby uruchomić ten kod w wątku interfejsu użytkownika.

interfejs API

Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.