Xamarin.Essentials:偵測搖動

Accelerometer 可讓您監視裝置的加速計感應器,其會在立體空間中表示裝置的加速。 此外,其也可讓您在使用者搖動裝置時登錄事件。

開始使用

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

使用偵測搖動

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

using Xamarin.Essentials;

若要偵測裝置的搖動,您必須透過呼叫 StartStop 方法來使用 Accelerometer 功能,以接聽加速計的變更,及偵測搖動。 每當偵測到搖動時就會引發 ShakeDetected 事件。 建議針對 SensorSpeed 使用 Game 或更快的項目。 以下是範例使用方式:


public class DetectShakeTest
{
    // Set speed delay for monitoring changes.
    SensorSpeed speed = SensorSpeed.Game;

    public DetectShakeTest()
    {
        // Register for reading changes, be sure to unsubscribe when finished
        Accelerometer.ShakeDetected  += Accelerometer_ShakeDetected ;
    }

    void Accelerometer_ShakeDetected (object sender, EventArgs e)
    {
        // Process shake event
    }

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

感應器速度

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

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

實作詳細資料

偵測搖動 API 會從加速計使用原始讀數,以計算加速。 其會使用簡易的佇列機制,偵測 3/4 的最近加速計事件是否在最後半秒內發生。 加速是透過從加速計新增 X、Y、Z 讀數的平方,並將其與特定閾值比較計算得出。

API

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