forked from xamarin/Essentials
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGyroscope.uwp.cs
40 lines (32 loc) · 1.22 KB
/
Gyroscope.uwp.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using Windows.Devices.Sensors;
using WindowsGyro = Windows.Devices.Sensors.Gyrometer;
namespace Xamarin.Essentials
{
public static partial class Gyroscope
{
// keep around a reference so we can stop this same instance
static WindowsGyro sensor;
internal static WindowsGyro DefaultSensor =>
WindowsGyro.GetDefault();
internal static bool IsSupported =>
DefaultSensor != null;
internal static void PlatformStart(SensorSpeed sensorSpeed)
{
sensor = DefaultSensor;
var interval = sensorSpeed.ToPlatform();
sensor.ReportInterval = sensor.MinimumReportInterval >= interval ? sensor.MinimumReportInterval : interval;
sensor.ReadingChanged += DataUpdated;
}
static void DataUpdated(object sender, GyrometerReadingChangedEventArgs e)
{
var reading = e.Reading;
var data = new GyroscopeData(reading.AngularVelocityX, reading.AngularVelocityY, reading.AngularVelocityZ);
OnChanged(data);
}
internal static void PlatformStop()
{
sensor.ReadingChanged -= DataUpdated;
sensor.ReportInterval = 0;
}
}
}