你的位置:首页 > 操作系统

[操作系统]windows phone传感器


  Windows phone中的传感器主要包括加速计传感器、罗盘传感器、陀螺仪传感器等

加速计传感器

  Accelerometer类是加速传感器的接口,Accelerometer类位于Windows.Devices.Sensors命名空间下。 要使用系统加速计的功能,需要创建一个Accelerometer类的对象,然后用这个对象来捕获手机当前的加速状态。 Accelerometer类提供了ReadingChanged事件用于检测加速计的状态,并返回X、Y、Z轴信息。

  使用Accelerometer类之前要引用Microsoft.Devices.Sensors命名空间。

  主要代码如下:

 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 }

View Code

罗盘传感器

  用罗盘传感器来确定手机相对于地球北极磁场旋转的角度。 Compass类为Windows phone应用程序提供对设备罗盘传感器的访问。 首先调用罗盘类Compass的GetDefault()获取到罗盘对象,然后通过属性ReportInterval设置当前报告罗盘读书时间间隔。通过GetCurrentReading方法获取当前的属性值以及通过ReadingChanged事件获取方向的变化。

使用Compass类之前要引用Microsoft.Devices.Sensors命名空间。

  主要代码如下:

 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       else12         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             else31               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 }

View Code

陀螺仪传感器

  陀螺仪传感器测量手机沿着其三个主轴的旋转速度 Gyrometer类表示陀螺仪传感器,为Windows phone应用程序提供对设备陀螺仪传感器的访问,返回有关X、Y、Z轴的角速度值。