我正在开发一款应用程序,需要能够识别手机是否在某处(不移动)。 为此,我使用了Sensor.TYPE_LINEAR_ACCELERATION,它报告没有重力分量的加速度。在我的测试设备(Nexus 5)上,它报告的内容如下:x = 0,002,y = -0,02,z = -0,005 为了检测设备是否静止不动,我计算平均值:
avg =sqrt(sqr(x)+sqr(y)+sqr(z))
如果该值低于阈值,我向用户报告该设备处于静止状态。在我的Nexus 5上正常工作。
然而,Galaxy S5在静止时会报告类似的东西: x = -0,761,y = 0,167,z = 19,923
所以z值显然是错误的...当我搜索到这个问题的答案时,我发现TYPE_LINEAR_ACCELERATION的传感器值计算如下:
Sensor.TYPE_LINEAR_ACCELERATION = Sensor.TYPE_ACCELEROMETER - Sensor.TYPE_GRAVITY
由于加速度计和重力传感器应该包含地球重力(~9,81m / s2),我只能假设,三星在手机上出现了一些计算错误或者某些传感器反转....
有人有同样的问题吗?
其他(三星)手机会发生这种情况吗?
有没有解决这个问题?
答案 0 :(得分:0)
===新答案===
我已经看到更改传感器的采样率可以避免此错误。从可能的SensorManager.SENSOR_DELAY_FASTEST
到SensorManager.SENSOR_DELAY_UI
===老答案===
鉴于我对你的问题有2条评论,并且由于在其他2个Galaxy 5S上存在同样的问题,目前,并且关于检测到电话静止的目标,我只能建议2个解决方法:a 峰峰值考虑和高通滤波器。