Compartir a través de


OrientationSensor Clase

Definición

Representa un sensor de orientación.

Este sensor devuelve una matriz de rotación y un cuaternión que se puede usar para ajustar la perspectiva del usuario en una aplicación de juego.

Para obtener un ejemplo de implementación, consulte el ejemplo del sensor de orientación.

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
Herencia
Object Platform::Object IInspectable OrientationSensor
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Comentarios

Los datos del sensor se proporcionan en relación con el sistema fijo de coordenadas del sensor del dispositivo y son independientes de la orientación de la pantalla. En el caso de las aplicaciones que dependen de los datos del sensor para el control de entrada o para manipular elementos en la pantalla, el desarrollador debe tener en cuenta la orientación de visualización actual y compensar los datos de forma adecuada. Para obtener más información sobre el sistema de coordenadas del sensor, consulta Orientación de visualización y datos del sensor.

En el ejemplo siguiente se muestra cómo una aplicación para UWP compilada con XAML y C# usa el método GetDefault para establecer una conexión con un sensor de orientación. Si no se encuentra ningún sensor de orientación, el método devolverá un valor NULL.

_sensor = OrientationSensor.GetDefault();

En el ejemplo siguiente se muestra cómo una aplicación para UWP compilada con XAML registra un controlador de eventos 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);
    }
}

En el ejemplo siguiente se muestra el controlador de eventos 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);
    });
}

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
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

Propiedades

DeviceId

Obtiene el identificador del dispositivo.

MaxBatchSize

Obtiene el número máximo de eventos que el sensor puede procesar por lotes.

MinimumReportInterval

Obtiene el intervalo de informe mínimo admitido por el sensor.

ReadingTransform

Obtiene o establece la transformación que se debe aplicar a los datos del sensor. Las transformaciones que se van a aplicar están vinculadas a la orientación de visualización con la que se alinean los datos del sensor.

ReadingType

Obtiene el tipo de lectura del sensor.

ReportInterval

Obtiene o establece el intervalo de informe admitido por el sensor.

ReportLatency

Obtiene o establece el retraso entre lotes de información del sensor.

Métodos

FromIdAsync(String)

Obtiene de forma asincrónica el sensor de su identificador.

GetCurrentReading()

Obtiene la lectura del sensor actual.

GetDefault()

Devuelve el sensor de orientación predeterminado para lecturas absolutas.

GetDefault(SensorReadingType)

Devuelve el sensor de orientación predeterminado, teniendo en cuenta las preferencias de precisión.

GetDefault(SensorReadingType, SensorOptimizationGoal)

Devuelve el sensor de orientación predeterminado, teniendo en cuenta las preferencias de potencia y precisión.

GetDefaultForRelativeReadings()

Devuelve el sensor de orientación predeterminado para lecturas relativas.

GetDeviceSelector(SensorReadingType)

Obtiene el selector de dispositivos.

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

Obtiene el selector de dispositivos.

Eventos

ReadingChanged

Se produce cada vez que el sensor de orientación notifica una nueva lectura del sensor.

Se aplica a

Consulte también