Compass 類別

定義

表示指南針感應器。

此感應器會傳回磁北和可能為 True North 的標題。 (後者相依于系統功能。)

如需範例實作,請參閱指南針範例

public ref class Compass sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Compass final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Compass
Public NotInheritable Class Compass
繼承
Object Platform::Object IInspectable Compass
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

備註

感應器資料會相對於裝置的固定感應器座標系統提供,而且與顯示方向無關。 對於依賴感應器資料進行輸入控制項或操作螢幕上元素的應用程式,開發人員必須將目前的顯示方向納入考慮,並適當地補償資料。 如需感應器座標系統的詳細資訊,請參閱 感應器資料和顯示方向

下列範例示範使用 XAML 和 C# 建置的 UWP 應用程式如何使用 GetDefault 方法來建立指南針的連線。 如果找不到整合式指南針,此方法會傳回 Null 值。

_compass = Compass.GetDefault();

下列範例示範如何使用 XAML 建置的 UWP 應用程式註冊 ReadingChanged 事件處理常式。

private void ScenarioEnable(object sender, RoutedEventArgs e)
{
    if (_compass != null)
    {
        // Establish the report interval
        _compass.ReportInterval = _desiredReportInterval;

        Window.Current.VisibilityChanged += new WindowVisibilityChangedEventHandler(VisibilityChanged);
        _compass.ReadingChanged += new TypedEventHandler<Compass, CompassReadingChangedEventArgs>(ReadingChanged);

        ScenarioEnableButton.IsEnabled = false;
        ScenarioDisableButton.IsEnabled = true;
    }
    else
    {
        rootPage.NotifyUser("No compass found", NotifyType.StatusMessage);
    }
}

下列範例顯示 ReadingChanged 事件處理常式。

async private void ReadingChanged(object sender, CompassReadingChangedEventArgs e)
{
    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        CompassReading reading = e.Reading;
        ScenarioOutput_MagneticNorth.Text = String.Format("{0,5:0.00}", reading.HeadingMagneticNorth);
        if (reading.HeadingTrueNorth != null)
        {
            ScenarioOutput_TrueNorth.Text = String.Format("{0,5:0.00}", reading.HeadingTrueNorth);
        }
        else
        {
            ScenarioOutput_TrueNorth.Text = "No data";
        }
    });
}

版本歷程記錄

Windows 版本 SDK 版本 已新增值
1709 16299 FromIdAsync
1709 16299 GetDeviceSelector
1709 16299 MaxBatchSize
1709 16299 ReportLatency
2004 19041 ReportThreshold

屬性

DeviceId

取得裝置識別碼。

MaxBatchSize

取得感應器可批次處理的事件數目上限。

MinimumReportInterval

取得指南針支援的最小報告間隔。

ReadingTransform

取得或設定必須套用至感應器資料的轉換。 要套用的轉換會系結至要對齊感應器資料的顯示方向。

ReportInterval

取得或設定指南針的目前報表間隔。

ReportLatency

取得或設定感應器資訊批次之間的延遲。

ReportThreshold

取得指南針感應器的 CompassDataThreshold

方法

FromIdAsync(String)

以非同步方式從其識別碼取得感應器。

GetCurrentReading()

取得目前的指南針讀數。

GetDefault()

傳回預設指南針。

GetDeviceSelector()

取得裝置選取器。

事件

ReadingChanged

每次指南針報告新的感應器讀數時發生。

適用於

另請參閱