OrientationSensor 类

定义

表示方向传感器。

此传感器返回一个旋转矩阵和一个四元数,可用于在游戏应用程序中调整用户的透视。

有关实现的示例,请参阅方向传感器示例

public ref class OrientationSensor 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 OrientationSensor 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 OrientationSensor
Public NotInheritable Class OrientationSensor
继承
Object Platform::Object IInspectable OrientationSensor
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

注解

传感器数据相对于设备的固定传感器坐标系提供,与显示方向无关。 对于依赖传感器数据进行输入控制或操作屏幕上元素的应用程序,开发人员必须考虑当前显示方向并适当地补偿数据。 有关传感器坐标系的详细信息,请参阅 传感器数据和显示方向

以下示例演示使用 XAML 和 C# 生成的 UWP 应用如何使用 GetDefault 方法建立与方向传感器的连接。 如果未找到方向传感器,该方法将返回 null 值。

_sensor = OrientationSensor.GetDefault();

以下示例演示使用 XAML 生成的 UWP 应用如何注册 ReadingChanged 事件处理程序。

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

以下示例演示 ReadingChanged 事件处理程序。

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

版本历史记录

Windows 版本 SDK 版本 增值
1607 14393 GetDefault (SensorReadingType)
1607 14393 GetDefault (SensorReadingType,SensorOptimizationGoal)
1709 16299 FromIdAsync
1709 16299 GetDeviceSelector (SensorReadingType)
1709 16299 GetDeviceSelector (SensorReadingType,SensorOptimizationGoal)
1709 16299 MaxBatchSize
1709 16299 ReportLatency

属性

DeviceId

获取设备标识符。

MaxBatchSize

获取传感器可以批处理的最大事件数。

MinimumReportInterval

获取传感器支持的最小报告间隔。

ReadingTransform

获取或设置需要应用于传感器数据的转换。 要应用的转换与用于对齐传感器数据的显示方向相关联。

ReadingType

获取传感器读取类型。

ReportInterval

获取或设置传感器支持的报告间隔。

ReportLatency

获取或设置传感器信息批次之间的延迟。

方法

FromIdAsync(String)

从其标识符异步获取传感器。

GetCurrentReading()

获取当前传感器读数。

GetDefault()

返回 绝对读数的默认方向传感器。

GetDefault(SensorReadingType)

返回默认的方向传感器,同时考虑精度首选项。

GetDefault(SensorReadingType, SensorOptimizationGoal)

返回默认的方向传感器,同时考虑功率和精度首选项。

GetDefaultForRelativeReadings()

返回 相对读数的默认方向传感器。

GetDeviceSelector(SensorReadingType)

获取设备选择器。

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

获取设备选择器。

事件

ReadingChanged

每次方向传感器报告新的传感器读数时发生。

适用于

另请参阅