Xamarin.Essentials: Barometer
Mit der Klasse Barometer können Sie den Barometersensor des Geräts überwachen, der den Druck misst.
Erste Schritte
Lesen Sie zum Einstieg in die Verwendung dieser API den Leitfaden mit ersten Schritte für Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.
Verwenden des Barometers
Fügen Sie in Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:
using Xamarin.Essentials;
Die Barometerfunktionalität ruft die Methoden Start
und Stop
auf, um auf die Änderungen der Druckmesswerte des Barometers in Hektopascal zu lauschen. Änderungen werden über das ReadingChanged
-Ereignis zurück gesendet. Sie können sie z.B. wie folgt verwenden:
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.
}
}
}
Sensorgeschwindigkeit
- Schnellste: Ruft die Sensordaten so schnell wie möglich ab (in einem UI-Thread ist eine Rückgabe nicht garantiert).
- Spiel: Für Spiele geeignete Übertragungsrate (in einem UI-Thread ist eine Rückgabe nicht garantiert).
- Standard: Für Änderungen der Bildschirmausrichtung geeignete Standardübertragungsrate.
- UI: Für allgemeine Benutzeroberflächenaktionen geeignete Übertragungsrate.
Wenn für Ihren Ereignishandler die Ausführung im UI-Thread nicht garantiert werden kann und der Ereignishandler auf Benutzeroberflächenelemente zugreifen muss, verwenden Sie die Methode MainThread.BeginInvokeOnMainThread
, um diesen Code im UI-Thread auszuführen.