Condividi tramite


OrientationSensor Classe

Definizione

Rappresenta un sensore di orientamento.

Questo sensore restituisce una matrice di rotazione e un Quaternion che può essere usato per regolare la prospettiva dell'utente in un'applicazione di gioco.

Per un'implementazione di esempio, vedere l'esempio di sensore di orientamento.

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
Ereditarietà
Object Platform::Object IInspectable OrientationSensor
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Commenti

I dati del sensore vengono forniti in relazione al sistema di coordinate del sensore fisso del dispositivo ed è indipendente dall'orientamento dello schermo. Per le applicazioni che si basano sui dati del sensore per il controllo di input o per modificare gli elementi sullo schermo, lo sviluppatore deve tenere conto dell'orientamento corrente dello schermo e compensare i dati in modo appropriato. Per altre informazioni sul sistema di coordinate del sensore, vedere Dati del sensore e orientamento dello schermo.

Nell'esempio seguente viene illustrato come un'app UWP compilata con XAML e C# usi il metodo GetDefault per stabilire una connessione a un sensore di orientamento. Se non viene trovato alcun sensore di orientamento, il metodo restituirà un valore Null.

_sensor = OrientationSensor.GetDefault();

Nell'esempio seguente viene illustrato come un'app UWP compilata con XAML registra un gestore eventi 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);
    }
}

Nell'esempio seguente viene illustrato il gestore eventi 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);
    });
}

Cronologia delle versioni

Versione di Windows Versione dell'SDK Valore aggiunto
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 ReportLatenza

Proprietà

DeviceId

Ottiene l'identificatore del dispositivo.

MaxBatchSize

Ottiene il numero massimo di eventi che possono essere batch dal sensore.

MinimumReportInterval

Ottiene l'intervallo minimo di report supportato dal sensore.

ReadingTransform

Ottiene o imposta la trasformazione che deve essere applicata ai dati del sensore. Le trasformazioni da applicare sono associate all'orientamento dello schermo con cui allineare i dati del sensore.

ReadingType

Ottiene il tipo di lettura del sensore.

ReportInterval

Ottiene o imposta l'intervallo di report supportato dal sensore.

ReportLatency

Ottiene o imposta il ritardo tra batch di informazioni sul sensore.

Metodi

FromIdAsync(String)

Ottiene in modo asincrono il sensore dal relativo identificatore.

GetCurrentReading()

Ottiene la lettura del sensore corrente.

GetDefault()

Restituisce il sensore di orientamento predefinito per letture assolute.

GetDefault(SensorReadingType)

Restituisce il sensore di orientamento predefinito, tenendo conto delle preferenze di accuratezza.

GetDefault(SensorReadingType, SensorOptimizationGoal)

Restituisce il sensore di orientamento predefinito, tenendo conto delle preferenze di potenza e accuratezza.

GetDefaultForRelativeReadings()

Restituisce il sensore di orientamento predefinito per le letture relative.

GetDeviceSelector(SensorReadingType)

Ottiene il selettore del dispositivo.

GetDeviceSelector(SensorReadingType, SensorOptimizationGoal)

Ottiene il selettore del dispositivo.

Eventi

ReadingChanged

Si verifica ogni volta che il sensore di orientamento segnala una nuova lettura del sensore.

Si applica a

Vedi anche