Xamarin.Essentials:磁力計
磁力計類別可讓您監視裝置的磁力計感應器,該感應器會指出裝置相對於地球磁場的方向。
開始使用
若要開始使用此 API,請閱讀 入門指南Xamarin.Essentials,以確保連結庫已正確安裝並設定在您的專案中。
使用磁力計
在類別中新增 的 Xamarin.Essentials 參考:
using Xamarin.Essentials;
磁力計功能的運作方式是呼叫 Start
和 Stop
方法,以觀察磁力計的變化。 所有變化都會透過 ReadingChanged
事件傳回。 以下是範例使用方式:
public class MagnetometerTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public MagnetometerTest()
{
// Register for reading changes.
Magnetometer.ReadingChanged += Magnetometer_ReadingChanged;
}
void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
{
var data = e.Reading;
// Process MagneticField X, Y, and Z
Console.WriteLine($"Reading: X: {data.MagneticField.X}, Y: {data.MagneticField.Y}, Z: {data.MagneticField.Z}");
}
public void ToggleMagnetometer()
{
try
{
if (Magnetometer.IsMonitoring)
Magnetometer.Stop();
else
Magnetometer.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
所有數據都會以 2T 傳回(microteslas)。
感應器速度
- 最快 – 以最快的方式取得感應器資料 (不保證在 UI 執行緒上傳回)。
- 遊戲 – 適合遊戲的費率 (不保證在 UI 執行緒上傳回)。
- 預設值 – 適合螢幕方向變更的預設速率。
- UI – 適合一般使用者介面的費率。
若您的事件處理常式不保證在 UI 執行緒上執行,且若事件處理常式需要存取使用者介面元素,請使用 MainThread.BeginInvokeOnMainThread
方法在 UI 執行緒上執行程式碼。