Xamarin.Essentials: 흔들림 감지

Accelerometer 클래스를 사용하면 3차원 공간에서 디바이스의 가속을 나타내는 디바이스의 가속도계 센서를 모니터링할 수 있습니다. 또한 사용자가 디바이스를 흔들면 이벤트를 등록할 수 있습니다.

시작하기

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

흔들림 탐지 사용

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

using Xamarin.Essentials;

디바이스의 흔들림을 탐지하려면 StartStop 메서드를 호출하여 가속도 변경 내용을 수신하고 흔들림을 탐지하는 가속도계 기능을 사용해야 합니다. 흔들림이 탐지될 때마다 ShakeDetected 이벤트가 발생합니다. SensorSpeedGame 이상의 속도를 사용하는 것이 좋습니다. 샘플은 다음과 같이 사용합니다.


public class DetectShakeTest
{
    // Set speed delay for monitoring changes.
    SensorSpeed speed = SensorSpeed.Game;

    public DetectShakeTest()
    {
        // Register for reading changes, be sure to unsubscribe when finished
        Accelerometer.ShakeDetected  += Accelerometer_ShakeDetected ;
    }

    void Accelerometer_ShakeDetected (object sender, EventArgs e)
    {
        // Process shake event
    }

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

센서 속도

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

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

구현 세부 정보

흔들림 탐지 API는 가속도계의 원시 판독값을 사용하여 가속도를 계산합니다. 최근 가속도계 이벤트의 3/4이 마지막 0.5초 동안에 발생했는지를 탐지하기 위해 간단한 큐 메커니즘을 사용합니다. 가속도는 가속도계의 X, Y 및 Z 판독값의 제곱을 추가하고 이를 특정 임계값과 비교하여 계산됩니다.

API

Channel 9YouTube에서 더 많은 Xamarin 비디오를 확인하세요.