gpt4 book ai didi

android - 如何使用 Android 加速度计检测步行

转载 作者:IT老高 更新时间:2023-10-28 23:20:47 25 4
gpt4 key购买 nike

我正在编写一个应用程序,我的目标是检测用户何时行走。我正在使用这样的卡尔曼滤波器:

float kFilteringFactor=0.6f;

gravity[0] = (accelerometer_values[0] * kFilteringFactor) + (gravity[0] * (1.0f - kFilteringFactor));
gravity[1] = (accelerometer_values[1] * kFilteringFactor) + (gravity[1] * (1.0f - kFilteringFactor));
gravity[2] = (accelerometer_values[2] * kFilteringFactor) + (gravity[2] * (1.0f - kFilteringFactor));

linear_acceleration[0] = (accelerometer_values[0] - gravity[0]);
linear_acceleration[1] = (accelerometer_values[1] - gravity[1]);
linear_acceleration[2] = (accelerometer_values[2] - gravity[2]);

float magnitude = 0.0f;
magnitude = (float)Math.sqrt(linear_acceleration[0]*linear_acceleration[0]+linear_acceleration[1]*linear_acceleration[1]+linear_acceleration[2]*linear_acceleration[2]);
magnitude = Math.abs(magnitude);
if(magnitude>0.2)
//walking

数组gravity[]初始化为0。

我可以检测到用户是否在走路(查看加速度矢量的大小值),但我的问题是当用户不走路并且他移动手机时,他似乎在走路.

我是否使用了正确的过滤器?

只看向量的大小是正确的还是让我看单个值??

最佳答案

Google 为此提供了一个名为 DetectedActivity 的 API,可以使用 ActivityRecognitionApi 获取该 API。可以访问这些文档 herehere .

DetectedActivity 有方法 public int getType() 来获取用户的当前 Activity 以及返回的 public int getConfidence()一个从 0 到 100 的值。getConfidence() 返回的值越高,API 越确定用户正在执行返回的 Activity 。

以下是 getType() 返回的内容的不断总结:

  • int IN_VEHICLE 设备在车辆中,例如汽车。
  • int ON_BICYCLE 设备在自行车上。
  • int ON_FOOT 设备在行走或运行的用户身上。
  • int RUNNING 设备正在运行的用户身上。
  • int STILL 设备静止(不移动)。
  • int TILTING 设备相对于重力的角度发生了显着变化。
  • int UNKNOWN 无法检测到当前 Activity 。
  • int WALKING 设备在行走的用户身上。

关于android - 如何使用 Android 加速度计检测步行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com