Bagikan melalui


Xamarin.Essentials:Accelerometer

Kelas Akselerometer memungkinkan Anda memantau sensor akselerometer perangkat, yang menunjukkan akselerasi perangkat dalam ruang tiga dimensi.

Memulai

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

Menggunakan Akselerometer

Tambahkan referensi ke Xamarin.Essentials di kelas Anda:

using Xamarin.Essentials;

Fungsionalitas Akselerometer berfungsi dengan memanggil Start metode dan Stop untuk mendengarkan perubahan pada akselerasi. Setiap perubahan dikirim kembali melalui ReadingChanged peristiwa. Berikut adalah contoh penggunaan:


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

    public AccelerometerTest()
    {
        // Register for reading changes, be sure to unsubscribe when finished
        Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
    }

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

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

Pembacaan akselerometer dilaporkan kembali di G. A G adalah satuan gaya gravitasi yang sama dengan yang diusir oleh bidang gravitasi bumi (9,81 m/s^2).

Sistem koordinat didefinisikan relatif terhadap layar ponsel dalam orientasi defaultnya. Sumbu tidak ditukar saat orientasi layar perangkat berubah.

Sumbu X adalah horizontal dan menunjuk ke kanan, sumbu Y vertikal dan mengarah ke atas dan sumbu Z menunjuk ke luar wajah depan layar. Dalam sistem ini, koordinat di belakang layar memiliki nilai Z negatif.

Contoh:

  • Ketika perangkat terletak datar pada tabel dan didorong di sisi kirinya ke kanan, nilai akselerasi x positif.

  • Ketika perangkat terletak datar pada tabel, nilai akselerasi adalah +1,00 G atau (+9,81 m/s^2), yang sesuai dengan akselerasi perangkat (0 m/s^2) dikurangi gaya gravitasi (-9,81 m/s^2) dan dinormalisasi seperti pada G.

  • Ketika perangkat terletak datar di atas tabel dan didorong ke langit dengan akselerasi A m/s^2, nilai akselerasi sama dengan A+9,81 yang sesuai dengan akselerasi perangkat (+A m/s^2) dikurangi gaya gravitasi (-9,81 m/s^2) dan dinormalisasi dalam G.

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

Temukan video Xamarin lainnya di Channel 9 dan YouTube.