Xamarin.Essentials:자이로스코프

Gyroscope 클래스를 사용하면 디바이스의 3개 기본 축을 중심으로 한 회전인 디바이스의 자이로스코프 센서를 모니터링할 수 있습니다.

시작하기

이 API를 사용하기 전에 라이브러리가 제대로 설치되고 프로젝트에 설정되어 있는지 확인하기 위해 Xamarin.Essentials에 대한 시작 가이드를 읽어보세요.

자이로스코프 사용

클래스에서 Xamarin.Essentials에 대한 참조를 추가합니다.

using Xamarin.Essentials;

자이로스코프 기능은 자이로스코프에 대한 변경 내용을 수신 대기하는 StartStop 메서드를 호출하여 작동합니다. ReadingChanged 이벤트를 통해 변경 내용을 다시 전송합니다(rad/s). 샘플은 다음과 같이 사용합니다.


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.
        }
    }
}

센서 속도

  • 가장 빠름 – 센서 데이터를 가장 빠르게 가져옵니다(UI 스레드에 반환이 보장되지 않음).
  • 게임 – 게임에 적합한 속도(UI 스레드에 반환이 보장되지 않음).
  • 기본값 - 화면 방향 변경에 적합한 기본 속도입니다.
  • UI - 일반 사용자 인터페이스에 적합한 속도입니다.

이벤트 처리기가 UI 스레드에서 실행하도록 보장되지 않고 사용자 인터페이스 요소에 액세스해야 하는 경우 MainThread.BeginInvokeOnMainThread 메서드를 사용하여 UI 스레드에서 해당 코드를 실행하세요.

API