Bagikan melalui


Xamarin.Essentials: Magnetometer

Kelas Magnetometer memungkinkan Anda memantau sensor magnetometer perangkat yang menunjukkan orientasi perangkat relatif terhadap medan magnet Bumi.

Memulai

Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.

Menggunakan Magnetometer

Tambahkan referensi ke Xamarin.Essentials di kelas Anda:

using Xamarin.Essentials;

Fungsi magnetometer bekerja dengan memanggil Start metode dan Stop untuk mendengarkan perubahan pada magnetometer. Setiap perubahan dikirim kembali melalui ReadingChanged peristiwa. Berikut adalah contoh penggunaan:


public class MagnetometerTest
{
    // Set speed delay for monitoring changes.
    SensorSpeed speed = SensorSpeed.UI;

    public MagnetometerTest()
    {
        // Register for reading changes.
        Magnetometer.ReadingChanged += Magnetometer_ReadingChanged;
    }

    void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
    {
        var data = e.Reading;
        // Process MagneticField X, Y, and Z
        Console.WriteLine($"Reading: X: {data.MagneticField.X}, Y: {data.MagneticField.Y}, Z: {data.MagneticField.Z}");
    }

    public void ToggleMagnetometer()
    {
        try
        {
            if (Magnetometer.IsMonitoring)
              Magnetometer.Stop();
            else
              Magnetometer.Start(speed);
        }
        catch (FeatureNotSupportedException fnsEx)
        {
            // Feature not supported on device
        }
        catch (Exception ex)
        {
            // Other error has occurred.
        }
    }
}

Semua data dikembalikan dalam μT (microteslas).

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.

API