Compartilhar via


OrientationSensor Classe

Definição

Representa um sensor de orientação.

Esse sensor retorna uma matriz de rotação e um Quaternion que podem ser usados para ajustar a perspectiva do usuário em um aplicativo de jogo.

Para obter um exemplo de implementação, consulte o exemplo de sensor de orientação.

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
Herança
Object Platform::Object IInspectable OrientationSensor
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Comentários

Os dados do sensor são fornecidos em relação ao sistema de coordenadas de sensor fixo do dispositivo e são independentes da orientação de exibição. Para aplicativos que dependem de dados de sensor para controle de entrada ou para manipular elementos na tela, o desenvolvedor deve levar em conta a orientação de exibição atual e compensar os dados adequadamente. Para obter mais informações sobre o sistema de coordenadas do sensor, consulte Dados do sensor e orientação de exibição.

O exemplo a seguir demonstra como um aplicativo UWP criado com XAML e C# usa o método GetDefault para estabelecer uma conexão com um sensor de orientação. Se nenhum sensor de orientação for encontrado, o método retornará um valor nulo.

_sensor = OrientationSensor.GetDefault();

O exemplo a seguir demonstra como um aplicativo UWP criado com XAML registra um manipulador 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);
    }
}

O exemplo a seguir mostra o manipulador 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);
    });
}

Histórico de versão

Versão do Windows Versão do SDK Valor adicionado
1607 14393 GetDefault(SensorReadingType)
1607 14393 GetDefault(SensorReadingType,SensorOptimizationGoal)
1.709 16299 FromIdAsync
1.709 16299 GetDeviceSelector(SensorReadingType)
1.709 16299 GetDeviceSelector(SensorReadingType,SensorOptimizationGoal)
1.709 16299 MaxBatchSize
1.709 16299 ReportLatency

Propriedades

DeviceId

Obtém o identificador do dispositivo.

MaxBatchSize

Obtém o número máximo de eventos que podem ser agrupados em lote pelo sensor.

MinimumReportInterval

Obtém o intervalo mínimo de relatório com suporte pelo sensor.

ReadingTransform

Obtém ou define a transformação que precisa ser aplicada aos dados do sensor. As transformações a serem aplicadas estão vinculadas à orientação de exibição com a qual alinhar os dados do sensor.

ReadingType

Obtém o tipo de leitura do sensor.

ReportInterval

Obtém ou define o intervalo de relatório com suporte pelo sensor.

ReportLatency

Obtém ou define o atraso entre lotes de informações do sensor.

Métodos

FromIdAsync(String)

Obtém de forma assíncrona o sensor de seu identificador.

GetCurrentReading()

Obtém a leitura do sensor atual.

GetDefault()

Retorna o sensor de orientação padrão para leituras absolutas.

GetDefault(SensorReadingType)

Retorna o sensor de orientação padrão, levando em conta as preferências de precisão.

GetDefault(SensorReadingType, SensorOptimizationGoal)

Retorna o sensor de orientação padrão, levando em conta as preferências de energia e precisão.

GetDefaultForRelativeReadings()

Retorna o sensor de orientação padrão para leituras relativas.

GetDeviceSelector(SensorReadingType)

Obtém o seletor de dispositivo.

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

Obtém o seletor de dispositivo.

Eventos

ReadingChanged

Ocorre sempre que o sensor de orientação relata uma nova leitura do sensor.

Aplica-se a

Confira também