Xamarin.Essentials:Pusula
Compass sınıfı, cihazın manyetik kuzey başlığını izlemenizi sağlar.
Kullanmaya başlayın
Bu API'yi kullanmaya başlamak için kitaplığın projelerinizde düzgün yüklendiğinden ve ayarlandığından emin olmak için Xamarin.Essentials kullanmaya başlama kılavuzunu okuyun.
Pusula Kullanma
Sınıfınızda için Xamarin.Essentials bir başvuru ekleyin:
using Xamarin.Essentials;
Pusula işlevi, pusuladaki Start
değişiklikleri dinlemek için ve Stop
yöntemlerini çağırarak çalışır. Tüm değişiklikler olay üzerinden ReadingChanged
geri gönderilir. Örnek aşağıda verilmiştir:
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
}
}
}
Algılayıcı Hızı
- En hızlı – Sensör verilerini mümkün olan en hızlı şekilde alın (UI iş parçacığında döndürüleceği garanti değildir).
- Oyun – Oyunlara uygun fiyat (kullanıcı arabirimi iş parçacığında döndürülmesi garanti değildir).
- Varsayılan – Ekran yönlendirme değişiklikleri için uygun varsayılan hız.
- Ui – Genel kullanıcı arabirimi için uygun oran.
Olay işleyicinizin kullanıcı arabirimi iş parçacığında çalışması garanti değilse ve olay işleyicisinin kullanıcı arabirimi öğelerine erişmesi gerekiyorsa, ui iş parçacığında bu kodu çalıştırmak için yöntemini kullanın MainThread.BeginInvokeOnMainThread
.
Platform Uygulama Özellikleri
Android, pusula başlığını almak için bir API sağlamaz. Google tarafından önerilen manyetik kuzey başlığını hesaplamak için ivmeölçer ve manyetometre kullanırız.
Nadir durumlarda tutarsız sonuçlar görebilirsiniz çünkü algılayıcıların ayarlanması gerekir ve bu da cihazınızı şekil-8 hareketinde taşımayı içerir. Bunu yapmanın en iyi yolu Google Haritalar'ı açmak, konumunuz için noktaya dokunmak ve Pusulayı ayarla'yı seçmektir.
Uygulamanızdan aynı anda birden fazla algılayıcı çalıştırmak sensör hızını ayarlayabilir.
Düşük Geçiş Filtresi
Android pusula değerlerinin güncelleştirilmesi ve hesaplanması nedeniyle değerlerin düzeltilmesi gerekebilir. Açıların sinüs ve kosinüs değerlerinin ortalamasını alan bir Düşük Geçiş Filtresi uygulanabilir ve parametresini kabul bool applyLowPassFilter
eden yöntem aşırı yüklemesi kullanılarak Start
açılabilir:
Compass.Start(SensorSpeed.UI, applyLowPassFilter: true);
Bu yalnızca Android platformunda uygulanır ve iOS ve UWP'de parametresi yoksayılır. Daha fazla bilgiyi burada okuyabilirsiniz.
API
İlgili Video
Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.