• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何计算Windows Phone 8在横向模式下的角度

windows-phone-7 来源:blooksa 3次浏览

因此,我一直在测试Windows Phone 8的传感器API。对于我的应用程序,我使用组合运动(http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202984(v=vs.105).aspx)。如何计算Windows Phone 8在横向模式下的角度

一切工作正常,而在肖像模式下,我转换滚动参数(我跳过偏航和俯仰)为度,并且我可以在屏幕上打印度数的角度。如果我将手机放在我面前并逆时针旋转,我会看到从0到-20,-30等等的程度。

但是,当我将其翻转到风景模式时,我得到了错误的角度。在做了一些关于偏航,俯仰和滚转的一般阅读(阅读:飞机)之后,以及它如何应用于手机(Android,WP)之后,我意识到滚转角度只能在范围内被信任[ -90,90]度。在打印出滚动值后,这就是我所看到的,它确认了范围(点击链接显示图像:http://i.stack.imgur.com/CPqG1.png)

所以这意味着我无法区分-45度和-135度,因为滚动价值是一样的。因此,我的问题是:我需要做什么才能让我的应用程序打印绝对角度(从0-360),因为我将它顺时针旋转(或逆时针旋转)?

当然,必须有一种方法来确定(在横向模式下)电话是否与地面保持平行?

我正在使用VS2012/C#/ Windows Phone 8 SDK。

正确的方向任何指针表示赞赏,也许我需要刷上我的高中数学?


===========解决方案如下:

要确定纵向/横向方向,您可以使用页面上的OrientationChanged事件。

首先,在页面初始化确定方向:

private PageOrientation lastOrientation; 

// Constructor 
public MainPage() 
{ 
    InitializeComponent(); 

    lastOrientation = this.Orientation; 

    if ((lastOrientation == PageOrientation.Landscape) || 
     (lastOrientation == PageOrientation.LandscapeLeft) || 
     (lastOrientation == PageOrientation.LandscapeRight)) 
    { 
     DoLandscapeCalculation(); 
    } 
    else if ((lastOrientation == PageOrientation.Portrait) || 
      (lastOrientation == PageOrientation.PortraitDown) || 
      (lastOrientation == PageOrientation.PortraitUp)) 
    { 
     DoPortraitCalculation(); 
    } 

    ... 

然后注册为OrientationChanged事件,并采取相应的行动:

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) 
{ 

    if ((e.Orientation == PageOrientation.Landscape) || 
     (e.Orientation == PageOrientation.LandscapeLeft) || 
     (e.Orientation == PageOrientation.LandscapeRight)) 
    { 
     //Landscape 
     DoLandscapeCalculation(); 
    } 
    else if ((e.Orientation == PageOrientation.Portrait) || 
      (e.Orientation == PageOrientation.PortraitUp) || 
      (e.Orientation == PageOrientation.PortraitDown)) 
    { 
     //Portrait 
     DoPortraitCalculation(); 
    } 

    // Extra work here! 

    ... 

    lastOrientation = e.Orientation; 
} 

希望这是给你的一个开始。

Regards,


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)