Har*_*eem 8 android sensormanager pedometer
我正在开发一个计步器Android应用程序来计算所采取的步数,并使用这些步骤计算所覆盖的距离和燃烧的卡路里.我已经按照教程 在Android中创建一个简单的计步器和步数计数器,并且完全像它一样.它检测传感器检测到运动时的步数.
但它有一些问题:
我已经从Play商店检查了一些其他应用程序,但他们没有做这种事情.
我已搜索但无法找到适合的解决方案或教程.任何帮助或建议.谢谢
通过在类中实现SensorEventListener侦听器并覆盖onSensorChanged和onAccuracyChanged两个方法,您可以开始跟踪步骤。
public class StepActivity extends Activity implements SensorEventListener{
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sSensor= sensorManager .getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
...
}
Run Code Online (Sandbox Code Playgroud)
现在我们已经初始化了 SensorManager 和 Sensor 并将 Sensor 注册为活动中的侦听器,我们现在需要实现onSensorChanged函数,只要我们注册的 Sensor 发生更改,该函数就会由SensorEvent触发,在我们的例子中是TYPE_STEP_DETECTOR。
private long steps = 0;
@Override
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
float[] values = event.values;
int value = -1;
if (values.length > 0) {
value = (int) values[0];
}
if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
steps++;
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是您的实现不够复杂:它仅检查加速度计数据中是否存在尖峰,并假定该尖峰来自某个台阶。它不知道加速度峰值实际上是从哪里来的:它可能还来自您跳动或摇动设备的原因。
那么如何使它更准确呢?好吧,这是一个非常困难的问题,长期以来一直是科学论文的主题。即使是最复杂的健身追踪器(使用机器学习,信号处理和其他统计方法)也很难确定该步骤何时是真实的,何时只是新手或用户正在使用该设备。
幸运的是,Android确实具有自己的内置步数计数器和步幅检测器,它们比您的示例中的类还要复杂。
因此,除非您真的想学习信号处理和AI(尽管我对阶跃检测的数据科学知之甚少,但我还是极力推荐这样做),否则建议您使用内置的检测器和计数器。
| 归档时间: |
|
| 查看次数: |
16897 次 |
| 最近记录: |