Xamarin.Essentials: OrientationSensor
Třída OrientationSensor umožňuje monitorovat orientaci zařízení v trojrozměrném prostoru.
Poznámka
Tato třída určuje orientaci zařízení ve 3D prostoru. Pokud potřebujete určit, jestli je video na zařízení v režimu na výšku nebo na šířku, použijte vlastnost objektu, který je Orientation k dispozici z třídy ScreenMetricsDeviceDisplay .
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro a ujistěte se, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Použití funkce OrientationSensor
Do třídy Xamarin.Essentials přidejte odkaz na :
using Xamarin.Essentials;
Je povolen voláním metody pro monitorování změn orientace zařízení a zakázáno OrientationSensorStart voláním Stop metody . Všechny změny se posílají zpět prostřednictvím ReadingChanged události. Tady je ukázka použ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 hlásí zpět ve formě , která popisuje orientaci zařízení na základě Quaternion 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:
- Kladná osa X ukazuje napravo od displeje v režimu na výšku.
- Kladná osa Y ukazuje na horní část zařízení v režimu na výšku.
- Kladná osa Z ukazuje z obrazovky.
3D souřadnicový systém Země má následující osy:
- Kladná osa X je tangens k povrchu Země a ukazuje na východ.
- Kladná osa Y je také tangens k povrchu Země a ukazuje na sever.
- Kladná osa Z je kolmá na povrch Země a ukazuje nahoru.
Popisuje otočení souřadnicového systému zařízení vzhledem ke souřadnicovému systému Quaternion Země.
Hodnota Quaternion velmi úzce souvisí s otočením kolem osy. Pokud je osa otočení normalizovaný vektor(x,y,z) a úhel otočení je V, pak jsou komponenty kvaternionu (X, Y, Z, W):
(ax·sin( Z/2), ay·sin( Z/2), az·sin( V/2), cos( V/2))
Jedná se o systémy souřadnic na pravé straně, takže když palce pravé ruky ukazuje na kladný směr osy otočení, křivka palce indikuje směr otáčení kladných úhlů.
Příklady:
Když se zařízení nachází plochou na tabulce s obrazovkou směřující nahoru a horní část zařízení (v režimu na výšku) směřuje na sever, jsou oba systémy souřadnic zarovnané. Hodnota
Quaternionpředstavuje kvaternion identity (0, 0, 0, 1). Všechny otočení lze analyzovat vzhledem k této pozici.Když se zařízení nachází plochou na tabulce s obrazovkou nahoru a horní část zařízení (v režimu na výšku) ukazuje na západ, hodnota
Quaternionje (0, 0, 0,707, 0,707). Kolem osy Z Země se zařízení otáčí o 90 stupňů.Když se zařízení podrží ve svislém směru tak, aby horní část (v režimu na výšku) směřoval k obloze a zadní část zařízení směřuje na sever, bylo zařízení obměněno 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 na tabulce a horní body na sever, bylo zařízení obměněn – 90 stupňů kolem osy Y (neboli 90 stupňů kolem záporné osy Y). Hodnota
Quaternionje (0, -0,707, 0, 0,707).
Rychlost snímače
- Nejrychlejší – získejte data snímačů co nejrychleji (nezaručuje vrácení ve vlákně uživatelského rozhraní).
- Game – míra vhodná pro hry (nezaručuje se vrácení ve vlákně 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 není zaručeno spuštění obslužné rutiny události ve vlákně uživatelského rozhraní a obslužná rutina události potřebuje přístup k prvkům uživatelského rozhraní, použijte metodu ke spuštění tohoto kódu ve MainThread.BeginInvokeOnMainThread vlákně uživatelského rozhraní.