Поделиться через


Xamarin.Essentials:Барометр

Класс Barometer позволяет отслеживать барометрический датчик устройства, измеряющий давление.

Начало работы

Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.

Использование класса Barometer

Добавьте ссылку на Xamarin.Essentials в своем классе:

using Xamarin.Essentials;

Чтобы использовать функции класса Barometer, вызывайте методы Start и Stop, которые отслеживают изменение показаний давления на барометре в гектопаскалях. Все изменения возвращаются через событие ReadingChanged. Пример использования:


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

    public BarometerTest()
    {
        // Register for reading changes.
        Barometer.ReadingChanged += Barometer_ReadingChanged;
    }

    void Barometer_ReadingChanged(object sender, BarometerChangedEventArgs e)
    {
        var data = e.Reading;
        // Process Pressure
        Console.WriteLine($"Reading: Pressure: {data.PressureInHectopascals} hectopascals");
    }

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

Скорость датчика

  • Fastest (Максимальная) — максимально быстрое получение данных датчика (возврат в поток пользовательского интерфейса не гарантирован).
  • Game (Игра) — скорость, подходящая для игр (возврат в поток пользовательского интерфейса не гарантирован).
  • Normal (Нормальная) — скорость по умолчанию, которая подходит для изменений ориентации экрана.
  • UI (Пользовательский интерфейс) — скорость, которая подходит для типичного пользовательского интерфейса.

Если нет гарантии, что обработчик событий будет запущен в потоке пользовательского интерфейса, и этому обработчику событий требуется доступ к элементам интерфейса, используйте метод MainThread.BeginInvokeOnMainThread для запуска кода в потоке пользовательского интерфейса.

Особенности реализации для платформ

Нет особенностей реализации для платформы.

API