OrientationSensor
OrientationSensor
OrientationSensor
OrientationSensor
OrientationSensor
Class
Definition
Represents an orientation sensor.
This sensor returns a rotation matrix and a Quaternion that can be used to adjust the user's perspective in a game application.
For an example implementation, see the orientation sensor sample.
public : sealed class OrientationSensor : IOrientationSensor, IOrientationSensor2, IOrientationSensor3, IOrientationSensorDeviceId
struct winrt::Windows::Devices::Sensors::OrientationSensor : IOrientationSensor, IOrientationSensor2, IOrientationSensor3, IOrientationSensorDeviceId
public sealed class OrientationSensor : IOrientationSensor, IOrientationSensor2, IOrientationSensor3, IOrientationSensorDeviceId
Public NotInheritable Class OrientationSensor Implements IOrientationSensor, IOrientationSensor2, IOrientationSensor3, IOrientationSensorDeviceId
// 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)
|
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 UWP app built with XAML and C# uses the GetDefault method to establish a connection to an orientation sensor. If no orientation sensor is found, the method will return a null value.
_sensor = OrientationSensor.GetDefault();
The following example demonstrates how a UWP app built with XAML registers a ReadingChanged event handler.
private void ScenarioEnable(object sender, RoutedEventArgs e)
{
if (_sensor != null)
{
// Establish the report interval
_sensor.ReportInterval = _desiredReportInterval;
Window.Current.VisibilityChanged += new WindowVisibilityChangedEventHandler(VisibilityChanged);
_sensor.ReadingChanged += new TypedEventHandler<OrientationSensor, OrientationSensorReadingChangedEventArgs>(ReadingChanged);
ScenarioEnableButton.IsEnabled = false;
ScenarioDisableButton.IsEnabled = true;
}
else
{
rootPage.NotifyUser("No orientation sensor found", NotifyType.StatusMessage);
}
}
The following example shows the ReadingChanged event handler.
async private void ReadingChanged(object sender, OrientationSensorReadingChangedEventArgs e)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
OrientationSensorReading reading = e.Reading;
// Quaternion values
SensorQuaternion quaternion = reading.Quaternion; // get a reference to the object to avoid re-creating it for each access
ScenarioOutput_X.Text = String.Format("{0,8:0.00000}", quaternion.X);
ScenarioOutput_Y.Text = String.Format("{0,8:0.00000}", quaternion.Y);
ScenarioOutput_Z.Text = String.Format("{0,8:0.00000}", quaternion.Z);
ScenarioOutput_W.Text = String.Format("{0,8:0.00000}", quaternion.W);
// Rotation Matrix values
SensorRotationMatrix rotationMatrix = reading.RotationMatrix;
ScenarioOutput_M11.Text = String.Format("{0,8:0.00000}", rotationMatrix.M11);
ScenarioOutput_M12.Text = String.Format("{0,8:0.00000}", rotationMatrix.M12);
ScenarioOutput_M13.Text = String.Format("{0,8:0.00000}", rotationMatrix.M13);
ScenarioOutput_M21.Text = String.Format("{0,8:0.00000}", rotationMatrix.M21);
ScenarioOutput_M22.Text = String.Format("{0,8:0.00000}", rotationMatrix.M22);
ScenarioOutput_M23.Text = String.Format("{0,8:0.00000}", rotationMatrix.M23);
ScenarioOutput_M31.Text = String.Format("{0,8:0.00000}", rotationMatrix.M31);
ScenarioOutput_M32.Text = String.Format("{0,8:0.00000}", rotationMatrix.M32);
ScenarioOutput_M33.Text = String.Format("{0,8:0.00000}", rotationMatrix.M33);
});
}
Properties
| DeviceId DeviceId DeviceId DeviceId DeviceId |
Gets the device identifier. |
| MaxBatchSize MaxBatchSize MaxBatchSize MaxBatchSize MaxBatchSize |
Gets the maximum number of events that can be batched by the sensor. |
| MinimumReportInterval MinimumReportInterval MinimumReportInterval MinimumReportInterval MinimumReportInterval |
Gets the minimum report interval supported by the sensor. |
| ReadingTransform 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. |
| ReadingType ReadingType ReadingType ReadingType ReadingType |
Gets the sensor reading type. |
| ReportInterval ReportInterval ReportInterval ReportInterval ReportInterval |
Gets or sets the report interval supported by the sensor. |
| ReportLatency ReportLatency ReportLatency ReportLatency ReportLatency |
Gets or sets the delay between batches of sensor information. |
Methods
Events
| ReadingChanged ReadingChanged ReadingChanged ReadingChanged ReadingChanged |
Occurs each time the orientation sensor reports a new sensor reading. |