Xamarin.Essentials:가 속도계
Accelerometer 클래스를 사용하면 3차원 공간에서 디바이스의 가속을 나타내는 디바이스의 가속도계 센서를 모니터링할 수 있습니다.
시작하기
이 API를 사용하기 전에 라이브러리가 제대로 설치되고 프로젝트에 설정되어 있는지 확인하기 위해 Xamarin.Essentials에 대한 시작 가이드를 읽어보세요.
가속도계 사용
클래스에서 Xamarin.Essentials에 대한 참조를 추가합니다.
using Xamarin.Essentials;
가속도계 기능은 가속에 대한 변경 내용을 수신 대기하는 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 단위로 다시 보고됩니다. G는 지구 중력 필드(9.81m/s^2)에서 영향을 주는 중력과 동일한 중력의 단위입니다.
좌표 시스템은 기본 방향에서 휴대폰의 화면을 기준으로 정의됩니다. 디바이스의 화면 방향이 변경되면 축이 바뀌지 않습니다.
X축은 가로이고 오른쪽을 가리키며, Y축은 세로이고 위를 가리키며, Z축은 화면 앞의 바깥쪽을 가리킵니다. 이 시스템에서 화면 뒤에 있는 좌표는 음수 Z 값입니다.
예:
디바이스가 테이블 위에 눕혀 있고 왼쪽을 오른쪽 방향으로 푸시한 경우 x 가속 값은 양수입니다.
디바이스가 테이블에 평평하게 놓이면 가속 값은 +1.00 G 또는 (+9.81 m/s^2)이며, 디바이스의 가속(0m/s^2)에서 중력(-9.81m/s^2)을 뺀 값에 해당하며 G에서와 같이 정규화됩니다.
디바이스가 테이블 위에 눕혀 있고 Am/s^2 가속으로 위쪽으로 푸시한 경우 가속 값은 A+9.81과 동일합니다. 이 값은 디바이스의 가속(+Am/s^2) - 중력(-9.81m/s^2)에 해당하며 G 단위로 일반화됩니다.
센서 속도
- 가장 빠름 – 센서 데이터를 가장 빠르게 가져옵니다(UI 스레드에 반환이 보장되지 않음).
- 게임 – 게임에 적합한 속도(UI 스레드에 반환이 보장되지 않음).
- 기본값 - 화면 방향 변경에 적합한 기본 속도입니다.
- UI - 일반 사용자 인터페이스에 적합한 속도입니다.
이벤트 처리기가 UI 스레드에서 실행하도록 보장되지 않고 사용자 인터페이스 요소에 액세스해야 하는 경우 MainThread.BeginInvokeOnMainThread
메서드를 사용하여 UI 스레드에서 해당 코드를 실행하세요.