Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс Gyroscope позволяет отслеживать датчик гироскопа устройства, который представляет собой поворот вокруг трех основных осей устройства.
Начало работы
Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.
Использование Gyroscope
Добавьте ссылку на Xamarin.Essentials в своем классе:
using Xamarin.Essentials;
Функция Gyroscope выполняется путем вызова методов Start
и Stop
для ожидания передачи данных об изменениях в гироскопе. Все изменения возвращаются через событие ReadingChanged
в рад/с. Пример использования:
public class GyroscopeTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public GyroscopeTest()
{
// Register for reading changes.
Gyroscope.ReadingChanged += Gyroscope_ReadingChanged;
}
void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
var data = e.Reading;
// Process Angular Velocity X, Y, and Z reported in rad/s
Console.WriteLine($"Reading: X: {data.AngularVelocity.X}, Y: {data.AngularVelocity.Y}, Z: {data.AngularVelocity.Z}");
}
public void ToggleGyroscope()
{
try
{
if (Gyroscope.IsMonitoring)
Gyroscope.Stop();
else
Gyroscope.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
Скорость датчика
- Fastest (Максимальная) — максимально быстрое получение данных датчика (возврат в поток пользовательского интерфейса не гарантирован).
- Game (Игра) — скорость, подходящая для игр (возврат в поток пользовательского интерфейса не гарантирован).
- Normal (Нормальная) — скорость по умолчанию, которая подходит для изменений ориентации экрана.
- UI (Пользовательский интерфейс) — скорость, которая подходит для типичного пользовательского интерфейса.
Если нет гарантии, что обработчик событий будет запущен в потоке пользовательского интерфейса, и этому обработчику событий требуется доступ к элементам интерфейса, используйте метод MainThread.BeginInvokeOnMainThread
для запуска кода в потоке пользовательского интерфейса.