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
- Наследование
- Атрибуты
Требования к 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 |
Происходит каждый раз, когда датчик ориентации сообщает о новом считывании датчика. |