Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Класс Accelerometer позволяет считывать данные с датчика акселерометра устройства, который показывает ускорение устройства в трехмерном пространстве.
Начало работы
Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.
Использование класса Accelerometer
Добавьте ссылку на Xamarin.Essentials в своем классе:
using Xamarin.Essentials;
Функции Accelerometer вызываются методами Start и Stop, которые активируют отслеживание изменений ускорения с датчика. Все изменения возвращаются через событие ReadingChanged. Пример использования:
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.
}
}
}
Показания акселерометра сообщаются в единицах G. Это единица измерения силы тяжести, равная силе гравитационного поля Земли (9,81 м/с^2).
Система координат задается относительно экрана телефона в ориентации по умолчанию. При изменении ориентации экрана устройства положение осей не меняется.
Ось X — горизонтальная и указывает вправо, ось Y — вертикальная и указывает вверх, а ось Z указывает в направлении от экрана вперед. Координаты позади экрана в этой системе имеют отрицательные значения по оси Z.
Примеры:
Когда устройство лежит на столе и толкается в левый бок, в результате двигаясь вправо, значение ускорения по оси X будет положительным.
Когда устройство находится на таблице, ускорение равно +1,00 Г или (+9,81 m/s^2), которое соответствует ускорению устройства (0 м/с^2) минус сила тяжести (-9,81 м/с^2) и нормализованная как в G.
Когда устройство лежит на столе, а затем его толкают или тянут вверх с ускорением A м/с^2, значение ускорения равно A + 9,81, что соответствует ускорению устройства (+A м/с^2) минус сила тяжести (–9,81 м/с^2). Это значение затем приводится к единицам G.
Скорость датчика
- Fastest (Максимальная) — максимально быстрое получение данных датчика (возврат в поток пользовательского интерфейса не гарантирован).
- Game (Игра) — скорость, подходящая для игр (возврат в поток пользовательского интерфейса не гарантирован).
- Normal (Нормальная) — скорость по умолчанию, которая подходит для изменений ориентации экрана.
- UI (Пользовательский интерфейс) — скорость, которая подходит для типичного пользовательского интерфейса.
Если нет гарантии, что обработчик событий будет запущен в потоке пользовательского интерфейса, и этому обработчику событий требуется доступ к элементам интерфейса, используйте метод MainThread.BeginInvokeOnMainThread для запуска кода в потоке пользовательского интерфейса.