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 自定义UI-垂直方向的SeekBar
  3. android自适应屏幕方向和大小
  4. 单击Button 更改屏幕方向
  5. Android 判断屏幕方向一个大坑
  6. android 屏幕方向随传感器变化,并带有切换大屏,小屏和锁定屏幕方向

随机推荐

  1. 你还在问android横竖屏切换的生命周期?
  2. 【全球首个】Android声纹识别程序 SuperL
  3. android号码匹配位数修改
  4. ok6410开发板android底层驱动模块编写,出
  5. 【Android 开发】:UI控件之 ListView 列表
  6. 【Android】AndroidManifest 清单文件以
  7. 封装view,并在activity中调用(转)
  8. Android ApiDemos示例解析(91):OS->SMS M
  9. Android getText(@string/a)和直接使用字符
  10. Android应用开发提高系列(5)――Android动