android程序xy数值设置,如何使用Android中的加速度计在XY平面上测量手机的倾斜度...
本质上有两种情况:设备平放不平。平面是指设备屏幕表面与世界xy平面之间的角度(我称之为倾斜度)小于25度或大于155度。想想电话平躺或从桌子上稍微倾斜一下。首先,您需要对加速度计矢量进行归一化。也就是说,如果g是由加速度传感器事件值返回的向量。在代码中float[] g = new float[3];g = event.values.clone();double norm_Of_g = Math.
本质上有两种情况:设备平放不平。平面是指设备屏幕表面与世界xy平面之间的角度(我称之为倾斜度)小于25度或大于155度。想想电话平躺或从桌子上稍微倾斜一下。
首先,您需要对加速度计矢量进行归一化。
也就是说,如果g是由加速度传感器事件值返回的向量。在代码中
float[] g = new float[3];
g = event.values.clone();
double norm_Of_g = Math.sqrt(g[0] * g[0] + g[1] * g[1] + g[2] * g[2]);
// Normalize the accelerometer vector
g[0] = g[0] / norm_Of_g
g[1] = g[1] / norm_Of_g
g[2] = g[2] / norm_Of_g
那么倾斜度可以计算为
int inclination = (int) Math.round(Math.toDegrees(Math.acos(g[2])));
从而
if (inclination < 25 || inclination > 155)
{
// device is flat
}
else
{
// device is not flat
}
对于平放的情况,您必须使用指南针来查看设备从起始位置旋转多少。
对于不平坦的情况,旋转(倾斜)计算如下
int rotation = (int) Math.round(Math.toDegrees(Math.atan2(g[0], g[1])));
现在旋转= 0表示设备处于正常位置。这是大多数手机和平板电脑风景的肖像没有任何倾斜。因此,如果您按照上方的照片持有手机并开始旋转,则旋转将会改变,而当手机处于横向状态时,旋转将为90或-90取决于旋转方向。
更多推荐
所有评论(0)