Xamarin.Essentials:陀螺仪

Gyroscope 类使你能够监控设备的陀螺仪传感器,此传感器测量围绕设备三个主轴的旋转。

入门

若要开始使用此 API,请阅读 Xamarin.Essentials 的入门指南,确保在项目中正确安装和设置库。

使用 Gyroscope

在类中添加对 Xamarin.Essentials 的引用:

using Xamarin.Essentials;

通过调用 StartStop 方法来使用 Gyroscope 功能以侦听陀螺仪的变化。 然后通过 ReadingChanged 事件反馈任何变化(以 rad/s 为单位)。 示例用法如下:


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

传感器速度

  • 最快 – 尽快获取传感器数据(不保证在 UI 线程上返回)。
  • 游戏 – 适合游戏的速度(不保证在 UI 线程上返回)。
  • 默认 - 适合屏幕方向更改的默认速率。
  • UI – 适合常规用户界面的速率。

如果事件处理程序不能保证在 UI 线程上运行,并且如果事件处理程序需要访问用户界面元素,请使用 MainThread.BeginInvokeOnMainThread 方法在 UI 线程上运行该代码。

API