Bagikan melalui


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.

API

Temukan video Xamarin lainnya di Channel 9 dan YouTube.