Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třída OrientationSensor umožňuje monitorovat orientaci zařízení v trojrozměrném prostoru.
Poznámka:
Tato třída slouží k určení orientace zařízení ve 3D prostoru. Pokud potřebujete zjistit, jestli je zobrazení videa zařízení v režimu na výšku nebo na šířku, použijte Orientation vlastnost objektu, který ScreenMetrics je k dispozici ve DeviceDisplay třídě.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Použití funkce OrientationSensor
Přidejte do Xamarin.Essentials předmětu odkaz:
using Xamarin.Essentials;
Tato OrientationSensor možnost je povolena voláním Start metody pro monitorování změn v orientaci zařízení a zakázána voláním Stop metody. Všechny změny se posílají zpět prostřednictvím ReadingChanged události. Tady je ukázkové využití:
public class OrientationSensorTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public OrientationSensorTest()
{
// Register for reading changes, be sure to unsubscribe when finished
OrientationSensor.ReadingChanged += OrientationSensor_ReadingChanged;
}
void OrientationSensor_ReadingChanged(object sender, OrientationSensorChangedEventArgs e)
{
var data = e.Reading;
Console.WriteLine($"Reading: X: {data.Orientation.X}, Y: {data.Orientation.Y}, Z: {data.Orientation.Z}, W: {data.Orientation.W}");
// Process Orientation quaternion (X, Y, Z, and W)
}
public void ToggleOrientationSensor()
{
try
{
if (OrientationSensor.IsMonitoring)
OrientationSensor.Stop();
else
OrientationSensor.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
OrientationSensor čtení se ohlašují zpět ve formě Quaternion , která popisuje orientaci zařízení na základě dvou 3D souřadnicových systémů:
Zařízení (obecně telefon nebo tablet) má 3D souřadnicový systém s následujícími osami:
- Osa X ukazuje vpravo od displeje v režimu na výšku.
- Osa Y ukazuje na začátek zařízení v režimu na výšku.
- Osa Z ukazuje mimo obrazovku.
3D souřadnicový systém Země má následující osy:
- Osa X je tečná k povrchu Země a bodů na východ.
- Osa Y je také tečná k povrchu Země a bodů na sever.
- Osa Z je kolmá na povrch Země a směřuje nahoru.
Popisuje Quaternion otočení souřadnicového systému zařízení vzhledem ke souřadnicovém systému Země.
Hodnota Quaternion velmi úzce souvisí s otáčením kolem osy. Pokud je osou otočení normalizovaný vektor (x,y, az) a úhel otáčení je Θ, pak jsou součásti kvarternionu (X, Y, Z, W):
(ax·sin(Θ/2), ay·sin(Θ/2), az·sin(Θ/2), cos(Θ/2))
Jedná se o souřadnicové systémy na pravé straně, takže palcem pravé ruky ukazující kladným směrem osy otáčení, křivka prstů označuje směr otáčení pro kladné úhly.
Příklady:
Když zařízení leží v tabulce s obrazovkou směrem nahoru a horní částí zařízení (v režimu na výšku) směřujícím na sever, zarovnají se tyto dva souřadnicové systémy. Hodnota
Quaternionpředstavuje kvaternion identity (0, 0, 0, 1). Všechna otočení se dají analyzovat vzhledem k této pozici.Když zařízení leží v tabulce s obrazovkou směrem nahoru a horní část zařízení (v režimu na výšku) směřující na západ,
Quaternionhodnota je (0, 0, 0,707, 0,707). Zařízení bylo otočené o 90 stupňů kolem osy Z země.Když je zařízení vzpřímené, aby horní (v režimu na výšku) odkazoval na oblohu a zadní část zařízení se na sever otočila o 90 stupňů kolem osy X. Hodnota
Quaternionje (0,707, 0, 0, 0,707).Pokud je zařízení umístěné tak, aby jeho levý okraj byl v tabulce a horní body na sever, bylo zařízení otočené o 90 stupňů kolem osy Y (nebo 90 stupňů kolem záporné osy Y). Hodnota
Quaternionje (0, -0,707, 0, 0,707).
Rychlost snímače
- Nejrychlejší – co nejrychleji získejte data ze snímačů (není zaručeno, že se vrátíte na vlákno uživatelského rozhraní).
- Hra – Rychlost vhodná pro hry (není zaručeno vrácení na vlákno uživatelského rozhraní).
- Výchozí – Výchozí rychlost vhodná pro změny orientace obrazovky.
- UŽIVATELSKÉ rozhraní – Rychlost vhodná pro obecné uživatelské rozhraní.
Pokud obslužná rutina události není zaručena spuštění ve vlákně uživatelského rozhraní a pokud obslužná rutina události potřebuje přístup k prvkům uživatelského rozhraní, použijte metodu MainThread.BeginInvokeOnMainThread ke spuštění kódu ve vlákně uživatelského rozhraní.