Xamarin.Essentials: Kompas
Třída glóbus vám umožní monitorovat magnetické záhlaví zařízení v severním.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Použití kompasu
Do třídy přidejte odkaz Xamarin.Essentials :
using Xamarin.Essentials;
Funkce glóbus funguje tak, že zavolá Start metody a, Stop aby naslouchala změnám v kompasu. Jakékoli změny se odešlou zpátky prostřednictvím ReadingChanged události. Zde naleznete příklad:
public class CompassTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public CompassTest()
{
// Register for reading changes, be sure to unsubscribe when finished
Compass.ReadingChanged += Compass_ReadingChanged;
}
void Compass_ReadingChanged(object sender, CompassChangedEventArgs e)
{
var data = e.Reading;
Console.WriteLine($"Reading: {data.HeadingMagneticNorth} degrees");
// Process Heading Magnetic North
}
public void ToggleCompass()
{
try
{
if (Compass.IsMonitoring)
Compass.Stop();
else
Compass.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Some other exception has occurred
}
}
}
Rychlost senzoru
- Nejrychlejší – Získejte data senzorů co nejrychleji (nezaručujeme návrat ve VLÁKNĚ uživatelského rozhraní).
- Hra – sazba vhodná pro hry (nezaručujeme návrat ve VLÁKNĚ uživatelského rozhraní).
- Výchozí – výchozí sazba je vhodná pro změny orientace obrazovky.
- Uživatelské rozhraní – sazba vhodná pro obecné uživatelské rozhraní.
Pokud vaše 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 MainThread.BeginInvokeOnMainThread metodu ke spuštění tohoto kódu ve vlákně uživatelského rozhraní.
Specifické pro implementaci platformy
Android neposkytuje rozhraní API pro načtení nadpisu kompasu. Využijeme akcelerometr a magnetometer k výpočtu magnetické hlavičky severů, kterou doporučuje Google.
Ve výjimečných případech vidíte nekonzistentní výsledky, protože senzory musí být kalibrovány, což zahrnuje přesun zařízení při pohybu na obrázku-8. Nejlepším způsobem, jak to udělat, je otevřít Google Mapy, klepnout na tečku pro vaše umístění a vybrat možnost kalibrovat kompas.
Spuštění více senzorů z vaší aplikace současně může upravit rychlost snímače.
Filtr nízká Pass
Vzhledem k tomu, jak se hodnoty pro Android glóbus aktualizují a vypočítávají, může být potřeba hodnoty vyhladit. Je možné použít Filtr s nízkým průchodem , který vypočítá průměrnou hodnotu sinus a kosinus úhlů a lze jej zapnout pomocí přetížení metody, které přijímá bool applyLowPassFilter parametr:
Compass.Start(SensorSpeed.UI, applyLowPassFilter: true);
Použije se jenom na platformě Android a parametr se ignoruje v iOS a UWP. Další informace si můžete přečíst tady.
rozhraní API
- Xamarin. Essentials /Compass "data-LINKTYPE =" external ">zdrojový kód kompasu
- Dokumentace k rozhraní API pro glóbus