Xamarin.Essentials: 자력계
Magnetometer 클래스를 사용하면 지구 자기장을 기준으로 디바이스 방향을 나타내는 디바이스의 지자기 센터 센서를 모니터링할 수 있습니다.
시작하기
이 API를 사용하기 전에 라이브러리가 제대로 설치되고 프로젝트에 설정되어 있는지 확인하기 위해 Xamarin.Essentials에 대한 시작 가이드를 읽어보세요.
지자기 센터 사용
클래스에서 Xamarin.Essentials에 대한 참조를 추가합니다.
using Xamarin.Essentials;
지자기 센터 기능은 지자기 센터에 대한 변경 내용을 수신 대기하는 Start
및 Stop
메서드를 호출하여 작동합니다. ReadingChanged
이벤트를 통해 변경 내용을 다시 전송합니다. 샘플은 다음과 같이 사용합니다.
public class MagnetometerTest
{
// Set speed delay for monitoring changes.
SensorSpeed speed = SensorSpeed.UI;
public MagnetometerTest()
{
// Register for reading changes.
Magnetometer.ReadingChanged += Magnetometer_ReadingChanged;
}
void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
{
var data = e.Reading;
// Process MagneticField X, Y, and Z
Console.WriteLine($"Reading: X: {data.MagneticField.X}, Y: {data.MagneticField.Y}, Z: {data.MagneticField.Z}");
}
public void ToggleMagnetometer()
{
try
{
if (Magnetometer.IsMonitoring)
Magnetometer.Stop();
else
Magnetometer.Start(speed);
}
catch (FeatureNotSupportedException fnsEx)
{
// Feature not supported on device
}
catch (Exception ex)
{
// Other error has occurred.
}
}
}
모든 데이터는 µT(microtesla) 단위로 반환됩니다.
센서 속도
- 가장 빠름 – 센서 데이터를 가장 빠르게 가져옵니다(UI 스레드에 반환이 보장되지 않음).
- 게임 – 게임에 적합한 속도(UI 스레드에 반환이 보장되지 않음).
- 기본값 - 화면 방향 변경에 적합한 기본 속도입니다.
- UI - 일반 사용자 인터페이스에 적합한 속도입니다.
이벤트 처리기가 UI 스레드에서 실행하도록 보장되지 않고 사용자 인터페이스 요소에 액세스해야 하는 경우 MainThread.BeginInvokeOnMainThread
메서드를 사용하여 UI 스레드에서 해당 코드를 실행하세요.