Xamarin.Essentials: ジャイロスコープXamarin.Essentials: Gyroscope

Gyroscope クラスを使用すると、デバイスの 3 つの主軸の周りの回転角度であるデバイスのジャイロスコープ センサーを監視できます。The Gyroscope class lets you monitor the device's gyroscope sensor which is the rotation around the device's three primary axes.

作業開始Get started

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Gyroscope の使用Using Gyroscope

自分のクラスの Xamarin.Essentials に参照を追加します。Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Gyroscope の機能は、ジャイロスコープの変化をリッスンする Start および Stop メソッドを呼び出すことで動作します。The Gyroscope functionality works by calling the Start and Stop methods to listen for changes to the gyroscope. すべての変更は ReadingChanged イベントを通じて rad/秒単位で戻されます。Any changes are sent back through the ReadingChanged event in rad/s. 以下がサンプルの使用方法です。Here is sample usage:


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

センサーの速度Sensor Speed

  • Fastest – センサー データを最高速度で取得します (UI スレッドに返ることが保証されません)。Fastest – Get the sensor data as fast as possible (not guaranteed to return on UI thread).
  • Game – ゲームに適した速度です (UI スレッドに返ることが保証されません)。Game – Rate suitable for games (not guaranteed to return on UI thread).
  • Normal – 画面の向きの変更に適した既定の速度です。Normal – Default rate suitable for screen orientation changes.
  • UI – 一般的なユーザー インターフェイスに適した速度です。UI – Rate suitable for general user interface.

イベント ハンドラーが UI スレッドでの実行を保証されておらず、そのイベント ハンドラーでユーザー インターフェイス要素にアクセスする必要がある場合は、MainThread.BeginInvokeOnMainThread メソッドを使用してそのコードを UI スレッドで実行します。If your event handler is not guaranteed to run on the UI thread, and if the event handler needs to access user-interface elements, use the MainThread.BeginInvokeOnMainThread method to run that code on the UI thread.

APIAPI