Freigeben über


OrientationSensor Klasse

Definition

Stellt einen Ausrichtungssensor dar.

Dieser Sensor gibt eine Rotationsmatrix und eine Quaternion zurück, mit der die Perspektive des Benutzers in einer Spielanwendung angepasst werden kann.

Eine Beispielimplementierung finden Sie im Beispiel für den Orientierungssensor.

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
Vererbung
Object Platform::Object IInspectable OrientationSensor
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Hinweise

Sensordaten werden relativ zum festen Sensorkoordinatensystem des Geräts bereitgestellt und sind unabhängig von der Anzeigeausrichtung. Bei Anwendungen, die sensordaten zur Eingabesteuerung oder zum Bearbeiten von Elementen auf dem Bildschirm verwenden, muss der Entwickler die aktuelle Anzeigeausrichtung berücksichtigen und die Daten entsprechend kompensieren. Weitere Informationen zum Sensorkoordinatensystem finden Sie unter Sensordaten und Anzeigeausrichtung.

Im folgenden Beispiel wird veranschaulicht, wie eine mit XAML und C# erstellte UWP-App die GetDefault-Methode verwendet, um eine Verbindung mit einem Orientierungssensor herzustellen. Wenn kein Orientierungssensor gefunden wird, gibt die Methode einen NULL-Wert zurück.

_sensor = OrientationSensor.GetDefault();

Im folgenden Beispiel wird veranschaulicht, wie eine mit XAML erstellte UWP-App einen ReadingChanged-Ereignishandler registriert.

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);
    }
}

Das folgende Beispiel zeigt den ReadingChanged-Ereignishandler .

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);
    });
}

Versionsverlauf

Windows-Version SDK-Version Wertschöpfung
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

Eigenschaften

DeviceId

Ruft den Gerätebezeichner ab.

MaxBatchSize

Ruft die maximale Anzahl von Ereignissen ab, die vom Sensor batched werden können.

MinimumReportInterval

Ruft das minimale Berichtsintervall ab, das vom Sensor unterstützt wird.

ReadingTransform

Ruft die Transformation ab, die auf Sensordaten angewendet werden muss, oder legt diese fest. Transformationen, die angewendet werden sollen, sind an die Anzeigeausrichtung gebunden, an der die Sensordaten ausgerichtet werden sollen.

ReadingType

Ruft den Sensorlesetyp ab.

ReportInterval

Ruft das vom Sensor unterstützte Berichtsintervall ab oder legt es fest.

ReportLatency

Ruft die Verzögerung zwischen Batches von Sensorinformationen ab oder legt diese fest.

Methoden

FromIdAsync(String)

Ruft den Sensor asynchron aus seinem Bezeichner ab.

GetCurrentReading()

Ruft den aktuellen Sensorwert ab.

GetDefault()

Gibt den Standardausrichtungssensor für absolute Messwerte zurück.

GetDefault(SensorReadingType)

Gibt den Standardausrichtungssensor unter Berücksichtigung der Genauigkeitseinstellungen zurück.

GetDefault(SensorReadingType, SensorOptimizationGoal)

Gibt den Standardausrichtungssensor unter Berücksichtigung der Leistungs- und Genauigkeitseinstellungen zurück.

GetDefaultForRelativeReadings()

Gibt den Standardausrichtungssensor für relative Messwerte zurück.

GetDeviceSelector(SensorReadingType)

Ruft die Geräteauswahl ab.

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

Ruft die Geräteauswahl ab.

Ereignisse

ReadingChanged

Tritt jedes Mal auf, wenn der Orientierungssensor einen neuen Sensorwert meldet.

Gilt für:

Weitere Informationen