1.android测量数据

(1)android设备坐标系

 x<0     x>0
^
|
+-----------+--> y>0
| |
| |
| |
| | / z<0
| | /
| | /
O-----------+/
|[] [ ] []/
+----------/+ y<0
/
/
|/ z>0 (toward the sky)

O: Origin (x=0,y=0,z=0)
按照上图所示,将手机平放在桌面上来看,手机的左下角是坐标原点,水平向右为x轴,水平向前为y轴,由x轴和y轴正方向叉乘形成的方向
为z轴,当手机平放时,z轴指向天空的方向。

(2)方向传感器

android的方向传感器可以获取3个数据。

orientation0:y轴在水平面上的投影偏离正北方向的角度,范围0~359度,正北为0,正东为90,正南为180,正西270。

orientation1:y轴和y轴在水平面上投影之间的角度,即y轴与水平面的夹角。

orientation2:x轴和x轴在水平面上投影之间的角度,即x轴与水平面的夹角。

(3)加速度传感器

android的加速度传感器可以获取3个数据。

accelerometerX:x轴方向的加速度-重力加速度在x轴上的分量。

accelerometerY:y轴方向的加速度-重力加速度在y轴上的分量。

accelerometerZ:z轴方向的加速度-重力加速度在z轴上的分量。

根据上述的两个传感器,能够测量出手机x,y,z轴相对于地面参照系的方向和手机相对于手机参照系的加速度。

因为我们项目的需要,要度量出手机相对于地面参照系的加速度,所以需要进行一些计算。

2.相对于地面参照系的加速度的计算

思路:将相对于手机坐标系的3个加速度相对于地面参照系的3个方向分解,再将分解后的加速度分量根据地面参照系的3个方向进行相加合成。得到相对于地面参照系的加速度。

在计算之前,先定义地面参照系的3个方向,垂直向上的方向为1,水平向北的方向为2,水平向东的方向为3.

(1)y轴

首先求y轴的单位向量在地面参照系中3个方向的分量。(这里的o1为orientation1,以此类推)

y0 = (-Math.sin(o1));

y1 = Math.cos(o1)*Math.cos(o0);

y2 = Math.cos(o1)*Math.sin(o0);

(2)x轴

temp = Math.acos(-(Math.tan(o1)*Math.tan(o2)));

x0 = (-Math.sin(o2));

x1 = Math.cos(o2)*Math.cos(o0+temp);

x2 = Math.cos(o2)*Math.sin(o0+temp);

(3)z轴

z0 = x2*y1-x1*y2;

z1 = x0*y2-x2*y0;

z2 = x1*y0-x0*y1;

(4)计算相对于地面参照系的3个方向的加速度(这里的ax为accelerometerX,以此类推)

a0 = ax*x0+ay*y0+az*z0+SensorManager.STANDARD_GRAVITY;(这里加上标准重力加速度以抵消默认的重力加速度)

a1 = ax*x1+ay*y1+az*z1;

a0 = ax*x2+ay*y2+az*z2

这样的a0,a1,a2数据即为手机相对于地面参照系的绝对加速度了。

更多相关文章

  1. Android获取手机方向
  2. android-详解Android中的屏幕方向
  3. 详解Android中的屏幕方向
  4. android横竖屏切换参数
  5. Android禁止横屏竖屏切换
  6. android常见的研究方向
  7. Android--布局方式(LinearLayout)学习
  8. Android锁定横竖屏、splash,全屏、去除标题的方法-网摘
  9. android 屏幕方向切换 锁定方向

随机推荐

  1. android jni 调用static native void met
  2. android sensorsimulator使用介绍
  3. Android(安卓)SDK 离线下载安装
  4. android 9.0 收到通知消息亮屏
  5. android 设置标题
  6. 移动端区分安卓系统和ios系统
  7. Android(安卓)Retrofit 2.0框架上传图片
  8. 查看已經下載好ANDROID源碼是什麽版本號
  9. MacOS 下Android Studio NDK 环境搭建与
  10. Android HapticFeedback(震动反馈)介绍