AndroidDev 板


LINE

※ 引述《orz811017 (orz811017)》之铭言: : 这学期做android专题 类似室内导航的题目 : 现在判断 手机的方向 遇到一些问题 : 不知道该如何 把手机自己的坐标系 转换到 世界的座标系中 : 之前算计步的时候就遇到这问题了 : 只是那时候偷懒只算跟重力的角度来判断 : (变成二维比较简单QQ : 看过paper似乎是要用 旋转矩阵 * Sensor上X,Y,Z的轴数值 : 可是我跟我趴呢实测好像不太对QQ : 不知道是Coding太差还是数学太差..... : 求各位先知前辈为小弟指点一下方向 : 谢谢大家 我不是什麽高手,但是我也吃了一些苦头,顺便分享一下 如果叙述不清楚就再发问吧 android 有关感应器分两类 1. accelerometer 加速度感应器 2. magnetic方向感应器 12都是根据磁通量来侦测 负责侦测抛掷Pitch、翻滚Roll、旋转Angle角度改变, 其中旋转Angle适合拿来当作罗盘使用 取得旋转Angle有两种方式,但是其中一种已经过时,故我们不讨论 方法如下 1.先继承SensorEventListener 2.取得SensorManager mSensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE); 3.取得加速感应器 mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 4.取得电子陀螺感应器 mMagmetic = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 5.注册重力感测器、电子罗盘listener mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mMagmetic, SensorManager.SENSOR_DELAY_NORMAL); 6.复写EventListener public void onSensorChanged(SensorEvent event) { //sensor状态改变 if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { magneticFieldValues = event.values.clone(); } if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { accelerometerValues = event.values.clone(); } getOrientation(); } 7. 取得资料 private void getOrientation(){ float[] SensorValues = new float[3]; float[] R = new float[9]; if (magneticFieldValues[0]!= 0 && accelerometerValues[2]!=0) { if (SensorManager.getRotationMatrix(R, null, accelerometerValues, magneticFieldValues)) { SensorManager.getOrientation(R, SensorValues); mAngle = SensorValues[0]; //旋转 mPitch = SensorValues[1]; //抛掷 mRoll = SensorValues[2]; //翻滚 } } } 8. 取得角度,要经过一次数据格式的转换,转换为度 int angle = Math.round(mAngle * (float)(180.0f/Math.PI) ) *-1; --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.63.96.2 ※ 编辑: pttnews 来自: 210.63.96.2 (12/31 16:30)
1F:推 ian90911:推 01/01 00:11
2F:推 asilzheng:推 01/01 10:48
3F:推 johnpage:手机的sensor负责方向及高度,WiFi负责室内所在位置,gps 01/02 07:54
4F:→ johnpage: 负责室外所在位置。 01/02 07:55
5F:→ johnpage:ps.WiFi需要校正才能用,与gps不同,而且误差大。 01/02 07:57
6F:推 orz811017:谢谢大大分享 !! 这个角度我也有取得了~ 01/02 12:30







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP