使用安卓加速度计/陀螺仪检测高度随时间的变化

时间:2015-03-02 20:10:24

标签: android

我想知道是否可以使用Android手机的加速度计和/或陀螺仪来检测高度的变化。例如,我是否能够检测到我是在开车/步行上山还是在山上? 我想在一段时间内记录任何轻微的手机动作,然后用这些数据计算出那段时间内的平均上/下动作。我只是不知道传感器是否准确到足以告诉我至少一般的方向(即我是上山还是下山)。 此外,如果我走路,那么我知道肯定会检测到运动,但是如果我在山上开车,我会检测到任何运动(假设我坐在车里)吗?

1 个答案:

答案 0 :(得分:0)

检测活动已经是Android操作系统的内置功能。我为此库做出了贡献,以便轻松获取检测到的活动:https://github.com/mcharmas/Android-ReactiveLocation/

它可以检测状态

  • IN_VEHICLE设备位于车辆中,例如汽车。
  • ON_BICYCLE设备在自行车上。
  • ON_FOOT设备位于正在行走或正在跑步的用户上。
  • RUNNING设备位于正在运行的用户上。
  • STILL设备仍在(不移动)。
  • 倾斜设备相对于重力的角度发生了显着变化。
  • UNKNOWN无法检测当前活动。
  • 步行该设备位于正在行走的用户身上。

返回检测到的活动以及0到100之间的置信度。https://developer.android.com/reference/com/google/android/gms/location/DetectedActivity.html

关于你关于海拔高度的问题,我不太确定。我最近读了一篇论文,其中作者试图创建一个隐马尔可夫模型来检测上面的一些活动,包括走上楼梯。他们遇到的问题是步行/上下楼梯之间很难区分。

我担心检测高度的尝试充其量只是相当不准确。

另一个选择可能是使用GPS,但由于不准确,需要特别小心:Android: How to get accurate altitude?