Xamarin.Essentials:加速度 計

Accelerometer 可讓您監視裝置的加速計感應器,其會在立體空間中表示裝置的加速。

開始使用

若要開始使用此 API,請閱讀 入門指南Xamarin.Essentials,以確保連結庫已正確安裝並設定在您的專案中。

使用 Accelerometer

在類別中新增 的 Xamarin.Essentials 參考:

using Xamarin.Essentials;

Accelerometer 功能的運作方式是呼叫 StartStop 方法,以觀察加速度的變化。 所有變化都會透過 ReadingChanged 事件傳回。 以下是範例使用方式:


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

Accelerometer 讀數會以 G 為單位回報。G 是一個重力單位,等於地球重力場所作用的重力 (9.81 m/s^2)。

座標系統的定義,相對於手機螢幕的預設方向。 當裝置的螢幕方向變更時,軸不會換位。

X 軸是指向右方的水平軸,Y 軸是指向上方的垂直軸,Z 軸則指向螢幕正面的外側。 在這個系統中,螢幕背面的座標會有負的 Z 值。

範例:

  • 當裝置平放在桌上,然後從裝置左側往右側推時,x 加速度值為正。

  • 當裝置位於桌子上時,加速值為 +1.00 G 或 (+9.81 m/s^2),其對應於裝置 (0 m/s^2) 的加速度減去重力 (-9.81 m/s^2) 和標準化為 G。

  • 當裝置平放在桌上,然後您以 A m/s^2 的加速度將它垂直向上拿起時,加速度值等於 A+9.81,也就是裝置加速度 (+A m/s^2) 減掉重力 (-9.81 m/s^2),然後以 G 標準化。

感應器速度

  • 最快 – 以最快的方式取得感應器資料 (不保證在 UI 執行緒上傳回)。
  • 遊戲 – 適合遊戲的費率 (不保證在 UI 執行緒上傳回)。
  • 預設值 – 適合螢幕方向變更的預設速率。
  • UI – 適合一般使用者介面的費率。

若您的事件處理常式不保證在 UI 執行緒上執行,且若事件處理常式需要存取使用者介面元素,請使用 MainThread.BeginInvokeOnMainThread 方法在 UI 執行緒上執行程式碼。

API

Channel 9YouTube 上尋找更多 Xamarin 影片。