Xamarin.Essentials:Kompas
Kelas Kompas memungkinkan Anda memantau judul utara magnetik perangkat.
Memulai
Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.
Menggunakan Kompas
Tambahkan referensi ke Xamarin.Essentials di kelas Anda:
using Xamarin.Essentials;
Fungsionalitas Kompas berfungsi dengan memanggil Start
metode dan Stop
untuk mendengarkan perubahan pada kompas. Setiap perubahan dikirim kembali melalui ReadingChanged
peristiwa. Berikut adalah contoh:
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
}
}
}
Kecepatan Sensor
- Tercepat - Dapatkan data sensor secepat mungkin (tidak dijamin akan kembali pada utas UI).
- Game – Rate cocok untuk game (tidak dijamin akan kembali pada utas UI).
- Default – Laju default yang cocok untuk perubahan orientasi layar.
- UI – Laju yang cocok untuk antarmuka pengguna umum.
Jika penanganan aktivitas Anda tidak dijamin berjalan pada utas UI, dan jika penanganan aktivitas perlu mengakses elemen antarmuka pengguna, gunakan MainThread.BeginInvokeOnMainThread
metode untuk menjalankan kode tersebut pada utas UI.
Spesifikasi Implementasi Platform
Android tidak menyediakan API untuk mengambil judul kompas. Kami menggunakan akselerometer dan magnetometer untuk menghitung judul utara magnetik, yang direkomendasikan oleh Google.
Dalam kasus yang jarang terjadi, Anda mungkin melihat hasil yang tidak konsisten karena sensor perlu dikalibrasi, yang melibatkan pemindahan perangkat Anda dalam gerakan gambar-8. Cara terbaik untuk melakukan ini adalah dengan membuka Google Peta, ketuk titik untuk lokasi Anda, dan pilih Kalibrasi kompas.
Menjalankan beberapa sensor dari aplikasi Anda secara bersamaan dapat menyesuaikan kecepatan sensor.
Filter Lulus Rendah
Karena bagaimana nilai kompas Android diperbarui dan dihitung mungkin ada kebutuhan untuk memuluskan nilai. Filter Low Pass dapat diterapkan yang rata-rata nilai sinus dan kosinus sudut dan dapat diaktifkan dengan menggunakan Start
metode kelebihan beban, yang menerima bool applyLowPassFilter
parameter:
Compass.Start(SensorSpeed.UI, applyLowPassFilter: true);
Ini hanya diterapkan pada platform Android, dan parameter diabaikan di iOS dan UWP. Informasi lebih lanjut dapat dibaca di sini.