OrientationSensor.ReadingChanged 이벤트
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
방향 센서가 새 센서 판독값을 보고할 때마다 발생합니다.
// 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)
이벤트 유형
예제
다음 예제에서는 C# 및 XAML을 사용하여 빌드된 UWP 앱이 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);
});
}
설명
애플리케이션은 센서 판독값을 얻기 위해 이 이벤트 처리기를 등록할 수 있습니다. 애플리케이션은 원하는 ReportInterval을 설정해야 합니다. 이렇게 하면 애플리케이션의 요구 사항을 충족하기 위해 리소스를 할당해야 한다는 것을 센서 드라이버에 알릴 수 있습니다.
OrientationSensor는 쿼터니언과 회전 행렬을 반환합니다.