Поделиться через


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)

Комментарии

Данные датчика предоставляются относительно фиксированной системы координат датчика устройства и не зависят от ориентации дисплея. Для приложений, использующих данные датчика для управления вводом или для управления элементами на экране, разработчик должен учитывать текущую ориентацию экрана и соответствующим образом компенсировать данные. Дополнительные сведения о системе координат датчика см. в разделе Данные датчика и ориентация дисплея.

В следующем примере показано, как приложение UWP, созданное с помощью XAML и C#, использует метод GetDefault для установки подключения к датчику ориентации. Если датчик ориентации не найден, метод возвращает значение NULL.

_sensor = OrientationSensor.GetDefault();

В следующем примере показано, как приложение UWP, созданное с помощью XAML, регистрирует обработчик событий 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

Происходит каждый раз, когда датчик ориентации сообщает о новом считывании датчика.

Применяется к

См. также раздел