我想得到设备的倾斜度,所以我可以用它来测量某个表面的倾斜度,将设备放在表面上。
现在我正在从这里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 度。
谢谢