OrientationSensor Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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. |