Compass class

Applies to Windows and Windows Phone

Represents a compass sensor.

This sensor returns a heading with respect to True North and, possibly, Magnetic North. (The latter is dependent on the sensor capabilities.)

Syntax


var compass = Windows.Devices.Sensors.Compass;

Attributes

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

Members

The Compass class has these types of members:

Events

The Compass class has these events.

EventDescription
ReadingChanged Occurs each time the compass reports a new sensor reading.

 

Methods

The Compass class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.

MethodDescription
GetCurrentReading Gets the current compass reading.
GetDefault Returns the default compass.

 

Properties

The Compass class has these properties.

PropertyAccess typeDescription

DeviceId

Read-onlyGets the device identifier.

MinimumReportInterval

Read-onlyGets the minimum report interval supported by the compass.

ReportInterval

Read/writeGets or sets the current report interval for the compass.

 

Remarks

Sensor data is provided relative to the device's fixed sensor coordinate system, and is independent of display orientation. For applications that rely on sensor data for input control or to manipulate elements on the screen, the developer must take current display orientation into account and compensate the data appropriately. For more info about the sensor coordinate system, see Sensor data and display orientation.

The following example demonstrates how a Windows Store app built with XAML and C# uses the GetDefault method to establish a connection to a compass. If no integrated compass is found, the method will return a null value.


_compass = Compass.GetDefault();


The following example demonstrates how a Windows Store app built with XAML registers a ReadingChanged event handler.


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);
    }
}


The following example shows the ReadingChanged event handler.


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";
        }
    });
}


Requirements

Minimum supported client

Windows 8 [Windows Store apps, desktop apps]

Minimum supported server

None supported [Windows Store apps, desktop apps]

Minimum supported phone

Windows Phone 8

Namespace

Windows.Devices.Sensors
Windows::Devices::Sensors [C++]

Metadata

Windows.winmd

See also

Compass Quickstart
Compass Sample
Sensor data and display orientation

 

 

Show:
© 2014 Microsoft