Windows phone中的傳感器主要包括加速計傳感器、羅盤傳感器、陀螺儀傳感器等ide
加速計傳感器spa
Accelerometer類是加速傳感器的接口,Accelerometer類位於Windows.Devices.Sensors命名空間下。 要使用系統加速計的功能,須要建立一個Accelerometer類的對象,而後用這個對象來捕獲手機當前的加速狀態。 Accelerometer類提供了ReadingChanged事件用於檢測加速計的狀態,並返回X、Y、Z軸信息。code
使用Accelerometer類以前要引用Microsoft.Devices.Sensors命名空間。orm
主要代碼以下:對象
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 }
羅盤傳感器 blog
用羅盤傳感器來肯定手機相對於地球北極磁場旋轉的角度。 Compass類爲Windows phone應用程序提供對設備羅盤傳感器的訪問。 首先調用羅盤類Compass的GetDefault()獲取到羅盤對象,而後經過屬性ReportInterval設置當前報告羅盤讀書時間間隔。經過GetCurrentReading方法獲取當前的屬性值以及經過ReadingChanged事件獲取方向的變化。接口
使用Compass類以前要引用Microsoft.Devices.Sensors命名空間。事件
主要代碼以下:ip
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 }
陀螺儀傳感器ci
陀螺儀傳感器測量手機沿着其三個主軸的旋轉速度 Gyrometer類表示陀螺儀傳感器,爲Windows phone應用程序提供對設備陀螺儀傳感器的訪問,返回有關X、Y、Z軸的角速度值。