標籤:
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軸的角速度值。
windows phone感應器