需要先阅读:
http://blog.csdn.net/pw4work/article/details/72784417

什么是地磁倾角呢
看图比较明显了,简单的说,就是看地磁场和水平面的的角度是多少。直观的


magnetic dip的仪器。其实我们指南针是水平旋转的,来指明方向,而magnet dip就是一个垂直旋转的指南针。


可以看到,在磁南极时候magnetic dip垂直向上,在磁北极时候垂直向下。磁指针水平面以下为正角度,向上为负角度

前面文章说到,getRotationMatrix方法,传入的参数I就是磁场倾角的旋转矩阵。

SensorManager.java
public void getRotationMatrix(float[] R, float[] I,float[] gravity, float[] geomagnetic)
...
//前文说到 Ax,Ay,Az是垂直指向地心的坐标,Hx Hy Hz是指向磁东的分量,Mx My Mz是指向磁北的分量。if (I != null) {// compute the inclination matrix by projecting the geomagnetic// vector onto the Z (gravity) and X (horizontal component// of geomagnetic vector) axes.final float invE = 1.0f / (float)Math.sqrt(Ex*Ex + Ey*Ey + Ez*Ez);//计算向量模长的倒数final float c = (Ex*Mx + Ey*My + Ez*Mz) * invE;//求出磁场在世界坐标系的磁北方向的投影除以模长,就是余弦值COS。final float s = (Ex*Ax + Ey*Ay + Ez*Az) * invE;//求出磁场在世界坐标系的指向地心方向的投影除以模长,就是角的正弦值SIN。if (I.length == 9) {I[0] = 1;     I[1] = 0;     I[2] = 0;I[3] = 0;     I[4] = c;     I[5] = s;I[6] = 0;     I[7] =-s;     I[8] = c;//旋转矩阵构造,就是往相应位置填入COS和SIN的值,具体可以参见[旋转矩阵教程](http://silverwind1982.pixnet.net/blog/post/165223625-%E6%97%8B%E8%BD%89%E7%9F%A9%E9%99%A3-%28rotation-matrix%29%20%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E6%95%99%E7%A8%8B)//} else if (I.length == 16) {I[0] = 1;     I[1] = 0;     I[2] = 0;I[4] = 0;     I[5] = c;     I[6] = s;I[8] = 0;     I[9] =-s;     I[10]= c;I[3] = I[7] = I[11] = I[12] = I[13] = I[14] = 0;I[15] = 1;}}

利用getInclination(float[] I)从上面得到的磁场倾角矩阵获取磁场倾角:具体在注释里头了


SensorManager.java/*** Computes the geomagnetic inclination angle in radians from the* inclination matrix <b>I</b> returned by {@link #getRotationMatrix}.** @param I*        inclination matrix see {@link #getRotationMatrix}.** @return The geomagnetic inclination angle in radians.** @see #getRotationMatrix(float[], float[], float[], float[])* @see #getOrientation(float[], float[])* @see GeomagneticField**/public static float getInclination(float[] I) {if (I.length == 9) {return (float)Math.atan2(I[5], I[4]);//利用SIN和COS构造TAN求反正切,求出角度。} else {return (float)Math.atan2(I[6], I[5]);}}

一些误差:
和前面的一样,由于磁场来自于手机传感器,没有其他的手段区分这个磁场来自于地磁还是电子设备或者强磁铁,所以只好一股脑地认为全部都是地磁,这样就给地磁倾角的计算带来了误差。
有趣的是,地磁的分量经过地磁倾角旋转矩阵计算之后,世界坐标系下磁东的分量也化为了0。

Android 磁场传感器 地磁倾角计算 SensorManager.getInclination方法相关推荐

  1. android磁场传感器页面布局在哪,教程:Android传感器—传感器查询demo

    今天给大家带来一个篇安卓传感器查询的干货教程,五一出去旅游看人山人海,不如宅在家学技术! 在Android系统中提供有加速度.磁场.方向.陀螺仪.光线.压力.温度和接近等传感器.传感器系统会主动对上层 ...

  2. android学习笔记---57_采用方向传感器实现指南针,android设备传感器介绍,以及使用方法

    Java技术qq交流群:JavaDream:251572072 ------------------------------------------------------ 传感器类型:方向.加速度( ...

  3. android磁场传感器页面布局在哪,基于磁场检测的寻线小车传感器布局研究

    全国大学生"飞思卡尔"智能车比赛新的竞赛规则中,用通有20kHz交变电流的载流导线取代了原来的白底黑线道路,要求小车通过检测载流导线周围的电磁场信号来控制小车沿着载流导线前进. 磁 ...

  4. android 磁场传感器应用

    因公司有时需要测试某线圈磁场强度,特萌生一个用手机来测量的想法,并简单代码实现: 界面没时间精力弄,简单弄了几个文本框加进度条显示了事: 代码也简单: private SensorListener s ...

  5. android 磁场传感器 罗盘,HMC5883L电子指南针罗盘模块 GY-271三轴磁场传感器 的相关教程 带Arduino 51源代码...

    //*************************************** // HMC5883 51串口测试程序 // 使用单片机STC89C51 // 晶振:11.0592M // 显示: ...

  6. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  7. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  8. Pro Android学习笔记(一五五) 传感器(5) 磁场传感器和方位(上)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 文章转载 ...

  9. Pro Android学习笔记(一五五):传感器(5): 磁场传感器和方位(上)

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei. 磁场传感器(Magne ...

最新文章

  1. Vivado 随笔(6) Timing Summary 相关讨论(一)
  2. python领域有什么用-Python都能应用到哪些领域?具体就业职位有什么?
  3. Java将小数转换为成百分比输出
  4. Android jdwp 自动断开,开启debug调试模式,进入不了,等一会就闪退了!!!!
  5. eclipse链接mycat报数据源初始化失败
  6. 终端安全 | 全面适配国产系统,打造政企合规终端
  7. C++STL笔记(X):栏位宽度、填充字符、位置调整
  8. matplotlib 绘图代码库(自用)
  9. Markdown编辑器: 语法、Atom、Word、PPT
  10. Github之深入解析如何在托管在不同系统的项目上使用Git客户端
  11. c++实现单例模式完整源代码
  12. 飞控算法-姿态解算之互补滤波
  13. 一文了解通用行为识别ActionRecognition
  14. 山东科技大学计算机控制系统期末考试试卷,山东科技大学 计算机操作系统试题b...
  15. RecyclerView侧滑删除按钮
  16. ui设计一般用什么软件(ui学哪些软件)
  17. windows系统切换用户(通过cmd切换用户)
  18. Lerna管理npm包
  19. 怎么挖掘长尾关键词 SEO关键词挖掘方法教程
  20. Three.js - 使用 ThreeBSP 对模型进行布尔运算

热门文章

  1. 画一幅山水画,有庐山,日出,牛
  2. 2018年中国 Micro-LED 行业市场前景研究报告(简版)
  3. BufferedRead
  4. 后台和用户跟踪要点_联系人跟踪应用程序的一些基本要点
  5. XPDF安装与使用说明
  6. 人人都能学会数据分析-笔记
  7. matlab 矩阵与数比较,MATLAB 对矩阵中的数据进行大小比较
  8. Exchange邮箱的创建和配置
  9. 记录-链表头插尾插区别
  10. Too Files - 免费无限空间网络硬盘