Compartilhar via


OrientationSensor.ReadingChanged Evento

Definição

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

// Register
event_token ReadingChanged(TypedEventHandler<OrientationSensor, OrientationSensorReadingChangedEventArgs const&> const& handler) const;

// Revoke with event_token
void ReadingChanged(event_token const* cookie) const;

// Revoke with event_revoker
OrientationSensor::ReadingChanged_revoker ReadingChanged(auto_revoke_t, TypedEventHandler<OrientationSensor, OrientationSensorReadingChangedEventArgs const&> const& handler) const;
public event TypedEventHandler<OrientationSensor,OrientationSensorReadingChangedEventArgs> ReadingChanged;
function onReadingChanged(eventArgs) { /* Your code */ }
orientationSensor.addEventListener("readingchanged", onReadingChanged);
orientationSensor.removeEventListener("readingchanged", onReadingChanged);
- or -
orientationSensor.onreadingchanged = onReadingChanged;
Public Custom Event ReadingChanged As TypedEventHandler(Of OrientationSensor, OrientationSensorReadingChangedEventArgs) 

Tipo de evento

Exemplos

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

Comentários

Um aplicativo pode registrar esse manipulador de eventos para obter leituras de sensor. O aplicativo deve estabelecer um ReportInterval desejado. Isso informa ao driver do sensor que os recursos devem ser alocados para atender aos requisitos do aplicativo.

O OrientationSensor retorna um quatérnion e uma matriz de rotação.

Aplica-se a