エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

OrientationSensor.ReadingChanged | readingchanged Event

方位センサーが新しいセンサー読み取り結果を報告するたびに発生します。

構文


function onReadingChanged(eventArgs) { /* コード */ }
 
// addEventListener syntax
orientationSensor.addEventListener("readingchanged", onReadingChanged);
orientationSensor.removeEventListener("readingchanged", onReadingChanged);
 
- or -

orientationSensor.onreadingchanged = onReadingChanged;


イベント情報

Delegate TypedEventHandler<OrientationSensor, OrientationSensorReadingChangedEventArgs>

解説

アプリケーションでは、センサーの読み取り結果を取得するためにこのイベント ハンドラーを登録できます。アプリケーションは、目的の ReportInterval を確立する必要があります。これによって、アプリケーションの要件を満たすためにリソースを割り当てる必要があることをセンサー ドライバーに通知します。

OrientationSensor は、四元数と回転行列を返します。

C# と XAML でビルドされた Windows ストア アプリケーションが 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);
    });
}


JavaScript でビルドされた Windows ストア アプリケーションが ReadingChanged のイベント ハンドラーを登録する方法を次の例に示します。


function enableReadingChangedScenario() {
    if (sensor) {
        // Set the reportInterval to enable the sensor events
        sensor.reportInterval = reportInterval;

        document.addEventListener("msvisibilitychange", msVisibilityChangeHandler, false);
        sensor.addEventListener("readingchanged", onDataChanged);
        document.getElementById("scenario1Open").disabled = true;
        document.getElementById("scenario1Revoke").disabled = false;
    } else {
        WinJS.log && WinJS.log("No orientation sensor found", "sample", "error");
    }
}


次の例は、ReadingChanged イベント ハンドラーを示しています。


function onDataChanged(e) {
    var reading = e.reading;

    // Quaternion values
    var quaternion = reading.quaternion;    // get a reference to the object to avoid re-creating it for each access
    document.getElementById("eventOutputQuaternion").innerHTML =
           "W: " + quaternion.w.toFixed(6)
        + " X: " + quaternion.x.toFixed(6)
        + " Y: " + quaternion.y.toFixed(6)
        + " Z: " + quaternion.z.toFixed(6);

    // Rotation Matrix values
    var rotationMatrix = reading.rotationMatrix;
    document.getElementById("eventOutputRotationMatrix").innerHTML =
           "M11: " + rotationMatrix.m11.toFixed(6)
        + " M12: " + rotationMatrix.m12.toFixed(6)
        + " M13: " + rotationMatrix.m13.toFixed(6)
        + " M21: " + rotationMatrix.m21.toFixed(6)
        + " M22: " + rotationMatrix.m22.toFixed(6)
        + " M23: " + rotationMatrix.m23.toFixed(6)
        + " M31: " + rotationMatrix.m31.toFixed(6)
        + " M32: " + rotationMatrix.m32.toFixed(6)
        + " M33: " + rotationMatrix.m33.toFixed(6);
}


要件

最小限サポートされるクライアント

Windows 8

最小限サポートされるサーバー

サポートなし

最小限サポートされる携帯電話

Windows Phone 8

名前空間

Windows.Devices.Sensors
Windows::Devices::Sensors [C++]

メタデータ

Windows.winmd

参照

OrientationSensor

 

 

表示:
© 2015 Microsoft