Xamarin.Essentials:ジャイロスコープ
Gyroscope クラスを使用すると、デバイスの 3 つの主軸の周りの回転角度であるデバイスのジャイロスコープ センサーを監視できます。
作業開始
この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。
Gyroscope の使用
クラスの Xamarin.Essentials への参照を追加します。
using Xamarin.Essentials;
Gyroscope の機能は、ジャイロスコープの変化をリッスンする Start
および Stop
メソッドを呼び出すことで動作します。 すべての変更は ReadingChanged
イベントを通じて rad/秒単位で戻されます。 以下がサンプルの使用方法です。
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.
}
}
}
センサーの速度
- Fastest – センサー データを最高速度で取得します (UI スレッドに返ることが保証されません)。
- Game – ゲームに適した速度です (UI スレッドに返ることが保証されません)。
- Default – 画面の向きの変更に適した既定の速度です。
- UI – 一般的なユーザー インターフェイスに適した速度です。
イベント ハンドラーが UI スレッドでの実行を保証されておらず、そのイベント ハンドラーでユーザー インターフェイス要素にアクセスする必要がある場合は、MainThread.BeginInvokeOnMainThread
メソッドを使用してそのコードを UI スレッドで実行します。