解决方案 »

  1.   

    就是把加速度传感器的数值变成在地面坐标系中的数值。(不知道android设备中是不是提供了这样的方法....)
    你说“不是对应屏幕坐标系”,难道加速度传感器的数值不是以屏幕坐标系(平行屏幕向右为x,平行屏幕向上为y,垂直屏幕向上为z)得到的数值么?
      

  2.   

    传感器的里面x,y,z对应的就是基地坐标,一屏幕为x,y,z为垂直的啊,,,
      

  3.   

    看懂了你的意思了,看下compass的代码吧,,,
      

  4.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
      

  5.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
    建议你随便找个指南针的源码看下,里面就是转化的,我写过一篇理论的东西你可以猛戳这里
      

  6.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
    建议你随便找个指南针的源码看下,里面就是转化的,我写过一篇理论的东西你可以猛戳这里呃,thx,我先看看
      

  7.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
    建议你随便找个指南针的源码看下,里面就是转化的,我写过一篇理论的东西你可以猛戳这里
    指南针源码里面只能得到方向的值,还是没有对加速度做转换的呀~~~您的计步器只需要知道夹角,在哪个坐标系里面都是可以获得的,所以也没做坐标系的转化呀~~
      

  8.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
    建议你随便找个指南针的源码看下,里面就是转化的,我写过一篇理论的东西你可以猛戳这里
    指南针源码里面只能得到方向的值,还是没有对加速度做转换的呀~~~您的计步器只需要知道夹角,在哪个坐标系里面都是可以获得的,所以也没做坐标系的转化呀~~我只是举例子,加速度传感器我也没细看,没做过这个方面的,你需要做这个转化干嘛用了?
      

  9.   

    突然发现居然是版主来解答我的疑惑,略表欣喜之情.....不过回答有点看不懂.....
    你说的基地坐标值得就是我表述的地面坐标?(正北为y轴,正东为x轴,指向天空为z轴)
    这和手机屏幕坐标系是不一样的呀~~~~
    还是说你的意思是:加速度传感器的数值就是相对于地面参考系的数值??
    建议你随便找个指南针的源码看下,里面就是转化的,我写过一篇理论的东西你可以猛戳这里
    指南针源码里面只能得到方向的值,还是没有对加速度做转换的呀~~~您的计步器只需要知道夹角,在哪个坐标系里面都是可以获得的,所以也没做坐标系的转化呀~~我只是举例子,加速度传感器我也没细看,没做过这个方面的,你需要做这个转化干嘛用了?
    做步态分析.......我现在有点思路了.....
      

  10.   

    多谢版主热心地回答。这个问题我已经通过其他途径解决啦~~thx
    这里留下我的解决方法,具体原理我也不懂,不过暂时知道怎么解决当下问题了:
    getRotationMatrix函数可以获取包含手机方向数据的数组R[ ],用所得的数据和R的逆矩阵相乘即可得到大地坐标系中的数据(官网上描述说R的逆矩阵就是R的转置矩阵)。
    参见:http://blog.csdn.net/android_qhdxuan/article/details/7454313
      

  11.   

    楼主,我也遇到了你的问题,按照你的方法是该这样写吗?
    accelerometer[0] = rotate[0] * avalues[0] + rotate[1] * avalues[1] + rotate[2] * avalues[2];
    accelerometer[1] = rotate[3] * avalues[0] + rotate[4] * avalues[1] + rotate[5] * avalues[2];
    accelerometer[2] = rotate[6] * avalues[0] + rotate[7] * avalues[1] + rotate[8] * avalues[2] - gravity;
    rotate是旋转矩阵,也就是R[];avalues是加速度传感器的值,可是为什么每次无论手机怎么动,accelerometer[0]和accelerometer[1]都是0,也就是xy方向没有加速度,但是accelerometer[3]值是会变化的,有正有负