Xamarin.iOS设备标题问题

时间:2014-07-21 14:05:01

标签: ios iphone xamarin.ios xamarin

这是我在这里提出的第一个问题,所以请耐心等待。

我在Xamarin.Android中开发了一个应用程序,无论我如何握住设备(纵向,横向左侧,右侧风景),我都需要实现一种确定设备标题值的方法。我通过使用来自Accelerometer和MagneticField传感器的数据计算RotationMatrix并使用GetOrientation方法获取mOrientation向量的值来实现此目的:

SensorManager.GetOrientation(mRotationM, mOrientation);

在此之后,我使用这种方法计算了设备的标题,其中alpha,beta gamma是mOrientation [0],mOrientation [1]和mOrientation [2]:

static float CompassHeading(double alpha, double beta, double gamma)
    {
        var cA = Math.Cos(alpha);
        var sA = Math.Sin(alpha);
        var sB = Math.Sin(beta);
        var cG = Math.Cos(gamma);
        var sG = Math.Sin(gamma);

        var rA = -cA * sG - sA * sB * cG;
        var rB = -sA * sG + cA * sB * cG;

        var compassHeading = Math.Atan(rA / rB);
        if (rB < 0)
            compassHeading += Math.PI;
        else if (rA < 0)
            compassHeading += 2 * Math.PI;
        return (float)compassHeading;
    }

在这里,我有一个compassHeading值,当我按住设备朝向Noth(例如)并且我将方向从纵向更改为横向和反之时,它大致相同。

到目前为止一切顺利,但我需要将其移植到iOS应用程序中。 我已经采取了从这里获取指南针的实现:https://github.com/woutercx/iOS.Compass.Sample,但这不是我想要的,因为TrueHeading值给了我北方和设备的顶部屏幕标题之间的角度(由我从横向切换到肖像时为90度)。我也试过搞乱CMMotionManager类,但没有成功。我找不到有关此问题的详细文档或Xamarin.iOS的实现,以确定正确的设备标题(独立于设备的方向 - 纵向/横向)。

谢谢你,对不起我的英语,但我相信我已就此问题指出了足够的信息。

0 个答案:

没有答案