在UWP开发中,咱们能使用的到方向有三种: OrientationSensor下的四元数;Compass罗盘的HeadingMagneticNorth;以及SimpleOrientationSensor。google
先说下SimpleOrientationSensor,这个是用在比较简单的状况下,它只能读取6个方向:旋转0,90,180,270,FaceUP,FaceDown。spa
var simpleOrien = SimpleOrientationSensor.GetDefault().GetCurrentOrientation(); switch (simpleOrien) { case SimpleOrientation.Facedown: // To do ... break; case SimpleOrientation.Faceup: // To do ... break; case SimpleOrientation.NotRotated: // To do ... break; case SimpleOrientation.Rotated180DegreesCounterclockwise: // To do ... break; case SimpleOrientation.Rotated270DegreesCounterclockwise: // To do ... break; case SimpleOrientation.Rotated90DegreesCounterclockwise: // To do ... break; }
罗盘:code
var compass = Compass.GetDefault().GetCurrentReading(); var angle= compass.HeadingMagneticNorth;
使用很简单,可是它读取的彷佛是你行进的方向,也就是说假如你站着不动的话,读数是没有意义的。htm
方向传感器:blog
var _sensor = OrientationSensor.GetDefault(); var quaternion = _sensor.GetCurrentReading().Quaternion; var heading = 180 * Math.Atan2(2 * (quaternion.W * quaternion.Z + quaternion.X * quaternion.Y), 1 - 2 * (quaternion.Y * quaternion.Y + quaternion.Z * quaternion.Z)) / Math.PI;
这个可能要稍微麻烦一点,由于它涉及到四元数,有关四元数的知识请自行google或翻书开发