【发布时间】:2017-08-29 19:23:43
【问题描述】:
我想得到设备的倾斜度,所以我可以用它来测量某个表面的倾斜度,将设备放在表面上。
现在我从这里https://github.com/rdelrosario/xamarin-plugins使用 xamarin 表单的 Device Motion 插件
以及下面的代码:
CrossDeviceMotion.Current.Start(MotionSensorType.Accelerometer);
CrossDeviceMotion.Current.SensorValueChanged += (s, a) =>
{
switch (a.SensorType)
{
case MotionSensorType.Accelerometer:
{
Debug.WriteLine("A: {0},{1},{2}", ((MotionVector)a.Value).X, ((MotionVector)a.Value).Y,
((MotionVector)a.Value).Z);
Exposicao.Inclinacao = ((MotionVector)a.Value).Z;
break;
}
case MotionSensorType.Compass:
{
// Debug.WriteLine("H: {0}", a.Value);
Exposicao.Bussola = (double)a.Value.Value;
break;
}
}
};
指南针部分没问题,加速度计部分工作但有一些问题。
如果我没记错的话,我会得到 Z 轴的倾斜,所以 z.Value.Value。
这个值对于android和ios是不同的,让我们关注android。
z 值从设备平放时为 10 到设备竖立时为 0,仅聚焦在一个象限。
为了实现我所解释的,我做错了什么?
如何将这些值转换为 0 到 90 之间的角度?它似乎不是线性的,所以 5 似乎不是 45 度。
谢谢
【问题讨论】:
标签: xamarin xamarin.forms devicemotion