这一部分我们讨论Android的姿态传感器中对于三轴角度的数据读取与应用。

1.初始化

 //初始化姿态传感器private void init_sensor(){sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//加速度传感器和地磁传感器acc_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);mag_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);//给传感器注册监听:sensorManager.registerListener(this, acc_sensor, SensorManager.SENSOR_DELAY_GAME);sensorManager.registerListener(this, mag_sensor,SensorManager.SENSOR_DELAY_GAME);}

这里注意,三轴角度是不能直接读出来的,需要结合加速度传感器和地磁传感器计算得到,所以这里进行两个传感器的初始化工作。

2.回调方法

 //传感器状态改变时的回调方法@Overridepublic void onSensorChanged(SensorEvent event) {if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){accValues=event.values.clone();//这里是对象,需要克隆一份,否则共用一份数据}else if(event.sensor.getType()==Sensor.TYPE_MAGNETIC_FIELD){magValues=event.values.clone();//这里是对象,需要克隆一份,否则共用一份数据}/**public static boolean getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic)* 填充旋转数组r* r:要填充的旋转数组* I:将磁场数据转换进实际的重力坐标中 一般默认情况下可以设置为null* gravity:加速度传感器数据* geomagnetic:地磁传感器数据*/SensorManager.getRotationMatrix(r, null, accValues, magValues);/*** public static float[] getOrientation (float[] R, float[] values)* R:旋转数组* values :模拟方向传感器的数据*/SensorManager.getOrientation(r, values);//将弧度转化为角度后输出/*values[0]  :方向角,但用(磁场+加速度)得到的数据范围是(-180~180),也就是说,0表示正北,90表示正东,180/-180表示正南,-90表示正西。而直接通过方向感应器数据范围是(0~359)360/0表示正北,90表示正东,180表示正南,270表示正西。values[1]  pitch 倾斜角  即由静止状态开始,前后翻转,手机顶部往上抬起(0~-180),手机尾部往上抬起(0~180)values[2]  roll 旋转角 即由静止状态开始,左右翻转,手机左侧抬起(0~180),手机右侧抬起(0~-180)*/for(int i=0;i<3;i++){values[i]=(float) Math.toDegrees(values[i]);}}

这里需要借助旋转数组(矩阵)进行计算,通过get方法结合传感器数据得到。然后得到方向传感器的数据(三轴角度),最后转化为角度,当然这个角度的定义是有规定的,具体如上面的注释所说。

之后就可以使用value的值了,可以发现转动手机时候,三轴角度都是实时变化的~

梅特勒杯创新大赛(二):Android姿态传感器-三轴角度相关推荐

  1. 维特智能六轴姿态传感器JY61P_stm32f1xx驱动代码解析

    目录 硬件准备/上位机直连 代码驱动 关于官方给出的示例 代码功能及其走位 1.怎样不依托代码验证传感器的某个功能是否有效或者能用? 2.写寄存器的方式 3.为什么不使用WIT私有协议中的关闭上电输出 ...

  2. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  3. 制图大赛计算机二维绘图,第五届“高教杯”全国大学生先进成图技术与产品信息建模创新大赛 机械类 计算机绘图试卷.pdf...

    第五届"高教杯"全国大学生先进成图技术与产品信息建模创新大赛机械类计算机绘图试卷 第五届"高教杯"全国大学生先进成图技术与产品信息建模创新大赛 机械类计算机绘图 ...

  4. 玄铁杯第二届RISC-V应用创新大赛火热报名中

    深圳2022年5月12日 /美通社/ -- 芯片开发社区举办的2022"玄铁杯"RISC-V应用创新大赛正在火热招生中.华强商城作为本次大赛的合作伙伴,现面向全球开发者发出本次大赛 ...

  5. 临沂大学张继群-智慧农业项目招募,第一届中国新型智慧城市创新应用大赛- 智诚奖,山东省总工会创业创新大赛,技能兴鲁职业技能大赛三等奖,全国创青春挑战杯大赛三等奖,中国创翼-担保集团杯暨临沂市创业创新大

    目录 一.自我介绍 二.新学期目标 三.未来的发展规划(可以具体写写) 一.自我介绍 硕士在读,曾在北京百思佳购科技有限公司担任Android事业六部项目经理.主要从事网络安全.云计算与大数据等新一代 ...

  6. 报名即将截止,中国移动“梧桐杯”大数据应用创新大赛,寻找大数据敢想者!...

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale赛事 主办方:中国移动信息技术中心 也许,你在大数据分析路上踽踽独行 来这里, ...

  7. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  8. 报名开始!第二届中国移动“梧桐杯”大数据应用创新大赛邀你夺52w大奖!

    为进一步落实中国移动战略,助力公司数字化转型发展,推动高校人才创新培养,由中国移动通信集团有限公司主办,中国移动通信集团北京有限公司.中国移动通信集团湖北有限公司.中国移动通信集团广东有限公司.中国移 ...

  9. 报名即将截止,“梧桐杯”大数据应用创新大赛,邀你进入大数据先锋阵营

    大数据建模不是孤独寂寞的路,面对无数的数字,一定要有人作伴 大数据建模不是望不到头的路,步履坚实的历程,要用成绩来证明 大数据建模不是沉闷无声的路,凝结心血的方案,值得大声说出来 路上的人 或许在电脑 ...

最新文章

  1. linux-----shell高级编程----grep应用
  2. 价值观对做产品的三点影响
  3. zz 写科技论文的一点体会
  4. kindle刷多看系统_疑问解答 | kindle真的能护眼吗?
  5. java streams_使用Stream.peek在Java Streams内部进行窥视
  6. Linux ubuntu centos 文件目录是什么意思
  7. 2018-05-21 Linux学习
  8. 计算机如何共享电视,智能电视怎么与电脑共享文件观看视频?
  9. 计算机网络对英语教学的消极影响,浅谈计算机对英语写作和教学的影响
  10. 单片机入门——流水灯介绍
  11. csgo控制台所有代码飞天_CSGO控制台指令汇总
  12. 凯文·凯利又出预言:未来科技将由这四股力量推动!
  13. directX11 软件包下载与配置
  14. 联想拯救者电脑高清壁纸
  15. 回传速率和测量带宽及两者之间的联系
  16. 腾讯云TVP大数据之约活动归来
  17. JVM(5)_方法区和大厂面试题
  18. 贝叶斯算法及其应用案例
  19. 大致总结一下 安卓各大版本的差异(安卓4以上版本)
  20. 知识科普系列:关于水下/海底光缆您需要了解的一切

热门文章

  1. C语言函数大全(包含大部分的函数,每个函数包括函数名,功能,用法,举例。)
  2. picview是哪里的图片_PicViewer(图片浏览器)
  3. 登录设备出现linux,批准此iphone 前往已登录iCloud的其他设备来批准这台iPhone
  4. 使用atomikos分布式事务报com.atomikos.icatch.RollbackException: Prepare: NO vote异常解决办法
  5. L2-014 列车调度 (25 分)
  6. MyISAM中的索引方案
  7. 淘宝 NPM 镜像站切换新域名啦
  8. DDCTF2018逆向 黑盒
  9. 晓帆:国外微博上的大佬都发什么?
  10. Python_Virtualenv虚拟环境的搭建