Windows phone中的传感器主要包括加速计传感器、罗盘传感器、陀螺仪传感器等
加速计传感器
Accelerometer类是加速传感器的接口,Accelerometer类位于Windows.Devices.Sensors命名空间下。 要使用系统加速计的功能,需要创建一个Accelerometer类的对象,然后用这个对象来捕获手机当前的加速状态。 Accelerometer类提供了ReadingChanged事件用于检测加速计的状态,并返回X、Y、Z轴信息。
使用Accelerometer类之前要引用Microsoft.Devices.Sensors命名空间。
主要代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 using Microsoft.Devices.Sensors; 2 3 namespace accelerometer 4 { 5 public partial class MainPage : PhoneApplicationPage 6 { 7 Accelerometer acc = new Accelerometer(); 8 9 public MainPage() 10 { 11 InitializeComponent(); 12 acc.ReadingChanged += acc_ReadingChanged; 13 acc.Start(); 14 } 15 16 void acc_ReadingChanged(object sender, AccelerometerReadingEventArgs e) 17 { 18 Deployment.Current.Dispatcher.BeginInvoke(() => ThreadStaticAccelerometerChanged(e)); 19 } 20 void ThreadStaticAccelerometerChanged(AccelerometerReadingEventArgs e) 21 { 22 Xtext.Text = e.X.ToString(); 23 Ytext.Text = e.Y.ToString(); 24 Ztext.Text = e.Z.ToString(); 25 } 26 } 27 }
罗盘传感器
用罗盘传感器来确定手机相对于地球北极磁场旋转的角度。 Compass类为Windows phone应用程序提供对设备罗盘传感器的访问。 首先调用罗盘类Compass的GetDefault()获取到罗盘对象,然后通过属性ReportInterval设置当前报告罗盘读书时间间隔。通过GetCurrentReading方法获取当前的属性值以及通过ReadingChanged事件获取方向的变化。
使用Compass类之前要引用Microsoft.Devices.Sensors命名空间。
主要代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 public myCompass() 2 { 3 InitializeComponent(); 4 if (Compass.IsSupported) 5 { 6 compass = new Compass(); 7 compass.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<CompassReading>>(compass_CurrentValueChanged); 8 compass.TimeBetweenUpdates = TimeSpan.FromMilliseconds(400); 9 compass.Start(); 10 } 11 else 12 MessageBox.Show("设备不支持电子罗盘"); 13 } 14 15 void compass_CurrentValueChanged(object sender, SensorReadingEventArgs<CompassReading> e) 16 { 17 if (compass.IsDataValid) 18 { 19 20 Deployment.Current.Dispatcher.BeginInvoke(() => 21 { 22 23 HeadingAccuracy = e.SensorReading.HeadingAccuracy; 24 25 if (!Calibrating) 26 { 27 TrueHeading = e.SensorReading.TrueHeading; 28 if ((180 <= TrueHeading) && (TrueHeading <= 360)) 29 ReciprocalHeading = TrueHeading - 180; 30 else 31 ReciprocalHeading = TrueHeading + 180; 32 CompassFace1.RenderTransformOrigin = new Point(0.5, 0.5); 33 transform.Angle = 360 - TrueHeading; 34 CompassFace1.RenderTransform = transform; 35 36 } 37 38 }); 39 } 40 } 41 } 42 }
陀螺仪传感器
陀螺仪传感器测量手机沿着其三个主轴的旋转速度 Gyrometer类表示陀螺仪传感器,为Windows phone应用程序提供对设备陀螺仪传感器的访问,返回有关X、Y、Z轴的角速度值。