次の方法で共有


OrientationSensor クラス

定義

方向センサーを表します。

このセンサーは、ゲーム アプリケーションでユーザーの視点を調整するために使用できる回転行列と四元数を返します。

実装例については、方位センサーのサンプルをご覧ください。

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
継承
Object Platform::Object IInspectable OrientationSensor
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

注釈

センサー データは、デバイスの固定センサー座標系に対して提供され、表示の向きに依存しません。 入力制御や画面上の要素の操作にセンサー データに依存するアプリケーションの場合、開発者は現在の表示方向を考慮し、データを適切に補正する必要があります。 センサー座標系の詳細については、「 センサー データと表示の向き」を参照してください。

次の例では、XAML と C# で構築された UWP アプリで GetDefault メソッドを使用して方向センサーへの接続を確立する方法を示します。 方向センサーが見つからない場合、メソッドは null 値を返します。

_sensor = OrientationSensor.GetDefault();

次の例では、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);
    });
}

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
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

プロパティ

DeviceId

デバイス識別子を取得します。

MaxBatchSize

センサーによってバッチ処理できるイベントの最大数を取得します。

MinimumReportInterval

センサーでサポートされている最小レポート間隔を取得します。

ReadingTransform

センサー データに適用する必要がある変換を取得または設定します。 適用する変換は、センサー データの配置に使用する表示方向に関連付けられます。

ReadingType

センサーの読み取りの種類を取得します。

ReportInterval

センサーでサポートされるレポート間隔を取得または設定します。

ReportLatency

センサー情報のバッチ間の遅延を取得または設定します。

メソッド

FromIdAsync(String)

センサーをその識別子から非同期に取得します。

GetCurrentReading()

現在のセンサーの読み取り値を取得します。

GetDefault()

絶対読み取りの既定の向きセンサーを返します。

GetDefault(SensorReadingType)

精度の設定を考慮して、既定の方向センサーを返します。

GetDefault(SensorReadingType, SensorOptimizationGoal)

電源と精度の設定を考慮して、既定の方向センサーを返します。

GetDefaultForRelativeReadings()

相対読み取りの既定の向きセンサーを返します。

GetDeviceSelector(SensorReadingType)

デバイス セレクターを取得します。

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

デバイス セレクターを取得します。

イベント

ReadingChanged

向きセンサーが新しいセンサーの読み取りを報告するたびに発生します。

適用対象

こちらもご覧ください