Magnetometer Magnetometer Magnetometer Magnetometer Class

Definition

Represents a magnetic sensor.

public : sealed class Magnetometer : IMagnetometer, IMagnetometer2, IMagnetometerDeviceId
public sealed class Magnetometer : IMagnetometer, IMagnetometer2, IMagnetometerDeviceId
Public NotInheritable Class Magnetometer Implements IMagnetometer, IMagnetometer2, IMagnetometerDeviceId
// This class does not provide a public constructor.
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Properties

DeviceId DeviceId DeviceId DeviceId

Gets the device identifier.

public : Platform::String DeviceId { get; }
public string DeviceId { get; }
Public ReadOnly Property DeviceId As string
var string = magnetometer.deviceId;
Value
Platform::String string string string

The device identifier.

MaxBatchSize MaxBatchSize MaxBatchSize MaxBatchSize

Gets the maximum number of events that can be batched by the sensor.

public : unsigned int MaxBatchSize { get; }
public uint MaxBatchSize { get; }
Public ReadOnly Property MaxBatchSize As uint
var uint = magnetometer.maxBatchSize;
Value
unsigned int uint uint uint

The maximum number of batched events.

Additional features and requirements
Device family
Windows 10 Fall Creators Update (introduced v10.0.16299.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v5)

Remarks

A sensor may not support batched data collection. In that case, this property will be 0. Otherwise, this determines the maximum number of events the sensor can gather before submitting them. This in turn will determine the maximum supported ReportLatency. The maximum latency equals the ReportInterval times the MaxBatchSize. For more information about sensor batching, see Sensors.

MinimumReportInterval MinimumReportInterval MinimumReportInterval MinimumReportInterval

Gets the minimum report interval supported by the magnetometer.

public : unsigned int MinimumReportInterval { get; }
public uint MinimumReportInterval { get; }
Public ReadOnly Property MinimumReportInterval As uint
var uint = magnetometer.minimumReportInterval;
Value
unsigned int uint uint uint

The minimum ReportInterval supported by the sensor.

Remarks

The interval is specified in milliseconds.

ReadingTransform ReadingTransform ReadingTransform ReadingTransform

Gets or sets the transformation that needs to be applied to sensor data. Transformations to be applied are tied to the display orientation with which to align the sensor data.

public : DisplayOrientations ReadingTransform { get; set; }
public DisplayOrientations ReadingTransform { get; set; }
Public ReadWrite Property ReadingTransform As DisplayOrientations
var displayOrientations = magnetometer.readingTransform;
magnetometer.readingTransform = displayOrientations;
Value
DisplayOrientations DisplayOrientations DisplayOrientations DisplayOrientations

A DisplayOrientations -typed value that specifies the display orientation with which to align the sensor data.

ReportInterval ReportInterval ReportInterval ReportInterval

Gets or sets the current report interval for the magnetometer.

public : unsigned int ReportInterval { get; set; }
public uint ReportInterval { get; set; }
Public ReadWrite Property ReportInterval As uint
var uint = magnetometer.reportInterval;
magnetometer.reportInterval = uint;
Value
unsigned int uint uint uint

The current report interval.

Remarks

The report interval is specified in milliseconds.

The report interval will be set to a default value that will vary based on the sensor driver’s implementation. If your app does not want to use this default value, you should set the report interval to a non-zero value prior to registering an event handler or calling GetCurrentReading. The sensor will then attempt to allocate resources to satisfy the application’s requirements but the sensor also has to balance the needs of other apps using the sensor.

Changes to the report interval after an event handler has been registered or GetCurrentReading has been called may apply to the delivery of subsequent sensor readings.

Conversely, when an application is finished with the sensor, it should explicitly return the sensor to its default report interval by setting it to zero. This is important for power conservation, especially when using a language that may keep the sensor object active for an indefinite period prior to garbage collection.

The application should consult the MinimumReportInterval property prior to setting the report interval to ensure that the sensor can honor the requested report interval. Setting a value below the minimum supported interval will either trigger an exception or have undefined results.

Although the application can set this value to request a particular report interval, the driver will determine the actual report interval, based on internal logic. For example, the driver might use the shortest report interval that is requested by any caller.

Setting a value of zero requests the driver to use its default report interval. As with requesting a specific interval, the driver may choose a different interval based on other client requests and internal logic.

The sensor platform automatically sets the change sensitivity for magnetometers based on the current report interval. This table specifies the change sensitivity values for given intervals.

Current report interval (specified in milliseconds)Change sensitivity (specified in degrees)
1 ms – 16 ms0.01 degrees
17 ms – 32 ms0.5 degrees
>= 33 ms2 degrees

ReportLatency ReportLatency ReportLatency ReportLatency

Gets or sets the delay between batches of sensor information.

public : unsigned int ReportLatency { get; set; }
public uint ReportLatency { get; set; }
Public ReadWrite Property ReportLatency As uint
var uint = magnetometer.reportLatency;
magnetometer.reportLatency = uint;
Value
unsigned int uint uint uint

The delay between batches of sensor information in milliseconds.

Additional features and requirements
Device family
Windows 10 Fall Creators Update (introduced v10.0.16299.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v5)

Remarks

This property is in reference to the frequency of ReadingChanged events.

Not all sensors support ReportLatency. If the sensor does not support this property, it will function the same as if you set this value to 0. Setting this value to 0 will use the default latency for the sensor.

If you set ReportLatency to a value higher than the maximum supported latency, the sensor will use the maximum supported latency. However, this property will not change in value. The maximum possible ReportLatency equals the MaxBatchSize times the ReportInterval.

Be aware that multiple applications could be dependent on a single sensor. Each of those applications can set a different value for ReportLatency. In this scenario, the sensor needs to try to accommodate the lowest value for ReportLatency. Because of this, the actual latency may not match the latency defined by this property in your application. This property corresponds to your ideal latency, which may not be the same latency on the sensor.

For more information about sensor batching, see Sensors.

Methods

FromIdAsync(String) FromIdAsync(String) FromIdAsync(String) FromIdAsync(String)

Asynchronously obtains the sensor from its identifier.

public : static IAsyncOperation<Magnetometer> FromIdAsync(Platform::String deviceId)
public static IAsyncOperation<Magnetometer> FromIdAsync(String deviceId)
Public Static Function FromIdAsync(deviceId As String) As IAsyncOperation( Of Magnetometer )
var iAsyncOperation = Windows.Devices.Sensors.Magnetometer.fromIdAsync(deviceId);
Parameters
deviceId
Platform::String String String String

The sensor identifier

Returns
Additional features and requirements
Device family
Windows 10 Fall Creators Update (introduced v10.0.16299.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v5)

GetCurrentReading() GetCurrentReading() GetCurrentReading() GetCurrentReading()

Gets the current magnetometer reading.

public : MagnetometerReading GetCurrentReading()
public MagnetometerReading GetCurrentReading()
Public Function GetCurrentReading() As MagnetometerReading
var magnetometerReading = magnetometer.getCurrentReading();
Returns

GetDefault() GetDefault() GetDefault() GetDefault()

Returns the default magnetometer.

public : static Magnetometer GetDefault()
public static Magnetometer GetDefault()
Public Static Function GetDefault() As Magnetometer
var magnetometer = Windows.Devices.Sensors.Magnetometer.getDefault();
Returns

GetDeviceSelector() GetDeviceSelector() GetDeviceSelector() GetDeviceSelector()

Gets the device selector.

public : static Platform::String GetDeviceSelector()
public static string GetDeviceSelector()
Public Static Function GetDeviceSelector() As string
var string = Windows.Devices.Sensors.Magnetometer.getDeviceSelector();
Returns
Platform::String string string string

Returns the device selector, if it exists; otherwise, null.

Additional features and requirements
Device family
Windows 10 Fall Creators Update (introduced v10.0.16299.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v5)

Events

ReadingChanged ReadingChanged ReadingChanged ReadingChanged

Occurs each time the compass reports a new sensor reading.

public : event TypedEventHandler ReadingChanged<Magnetometer,  MagnetometerReadingChangedEventArgs>
public event TypedEventHandler ReadingChanged<Magnetometer,  MagnetometerReadingChangedEventArgs>
Public Event TypedEventHandler ReadingChanged( Of ( Of Magnetometer ), ( Of  MagnetometerReadingChangedEventArgs ))
function onReadingChanged(eventArgs){/* Your code */}


magnetometer.addEventListener("readingChanged", onReadingChanged);
magnetometer.removeEventListener("readingChanged", onReadingChanged);

Remarks

An application may register this event handler to obtain sensor readings. The application must establish a desired ReportInterval. This informs the sensor driver that resources should be allocated to satisfy the requirements of the application.

Applications can set the frequency of this event by setting the ReportInterval property.