vgo*_*anz 12 android android-sensors compass-geolocation
我正在使用android传感器数据.我的应用程序使用
SensorManager.getRotationMatrixFromVector(
mRotationMatrix , event.values);
Run Code Online (Sandbox Code Playgroud)
它一直运作良好,直到今天早上,当旋转矩阵开始发送大量噪声数据时(在一秒内将N改为W).
这对我的代码来说不是问题,因为星期五工作并没有做任何改变.我使用了市场上的指南针应用程序,指南针提供随机数据.
我已经在另一台平板电脑上测试了我的应用程序,它运行良好.
有人知道为什么会这样吗?传感器有问题吗?需要校准吗?
Tim*_*Tim 21
我在手机上使用这些电子罗盘做了很多工作,很可能你的代码或传感器没有任何问题.
相反,它很可能是您的环境的问题.有磁场一直干扰着地球的磁场.从电气设备干扰到支撑建筑物的金属结构.在一天结束时,指南针只是一块磁铁.如果你站在一大块金属旁边,罗盘就会被它吸引并指向它而不是磁北极.
试试这个:安装GPS状态 然后关闭所有过滤(设置...... gps和传感器......传感器过滤......没有过滤).做校准(8个波浪形的东西),然后将手机移动到你的桌子附近..靠近显示器,电缆等.你会发现它变得疯狂.这些信息完全不可靠.我发现过去将手机向右移动几英寸完全改变了它的读数.真正的指南针也是如此.严格来说,没有"问题".设备的指南针为自己分配最强的磁场.即使附近岩石的磁性含量也会干扰指南针.
作为进一步的测试,我刚刚在手机上放置了一个真正的(定向越野)指南针,它安装了指南针应用程序.真正的指南针现在指向各处,但磁北.这两个设备互相干扰.
所以我的建议是......在开放的地方,如公园或田地,远离任何潜在的干扰和电源线,(如果你有一个真正的指南针来检查GPS status应用程序指向正确的方向),并看到如果您的指南针按照您的预期工作.
额外:校准时@resus的答案也很重要.在每个轴上旋转手机几次.看起来很傻,但它确实正确校准.
额外2: 使用GPS 的罗盘轴承是否可行/实用?它需要设备移动(步行速度应该很好),但您不必担心任何干扰.如果您的GPS信号良好,它应该给出准确的读数.
额外3:我刚刚想到了另一个想法..您可以尝试在传感器上应用低通滤波器.这意味着传感器读数的突然变化被过滤掉了.看看这个答案.如果这样做不好,网上有很多算法供您选择.
小智 7
如果您确实没有更改代码中的任何内容,并且它仍可在其他设备上正常工作,则表明该特定设备存在问题.
当您的应用程序正在运行时(即指南针正在使用中),您应该能够以8的数字挥动它以自动重新校准指南针.您还应该确保您没有站在可能干扰读数的任何大块金属等旁边.
当罗盘需要重新校准时(可能在精度下降时),您可以覆盖向用户闪烁消息的onAccuracyChanged()方法.SensorEventListenerSENSOR_STATUS_ACCURACY_LOW
根据我在Android手机上使用指南针的经验,它们可能非常不可靠......
如果您的应用程序在另一台平板电脑和其他指南针应用程序上工作不适用于您的设备,这可能是由于校准错误.
如上面的帖子中所述,为了进行校准,请将您的设备以8的形式挥动.我只想补充一点,您应该为EACH轴执行此操作.这应该可以解决您的问题.
| 归档时间: |
|
| 查看次数: |
14305 次 |
| 最近记录: |