Android计步器算法实现

本文不深入探讨计步器算法原理,而是分享作者实现的Android计步算法和步长计算代码。尽管Android系统自带计步器,但自定义算法能进行步长估计,并解决国产手机系统间计步算法灵敏度和缓冲带长度差异问题,确保算法稳定性和即时性。文中提供使用示例,并欢迎交流改进。
摘要由CSDN通过智能技术生成

最近在研究惯性导航和其他导航算法的融合,顺手把计步、步长等一堆算法写成类了,舒服~

这篇文章我不会具体的讲解实现原理,有兴趣研究的朋友直接看我写的计步算法实现步长计算

 

Android系统有自带的计步器,那么为什么要自己实现一套记步算法呢?

一.可以做步长估计

二.鉴于国产手机碎片化比较严重,不同系统都会有一套自己的记步算法,导致系统算法在实际运用中表现不同:

     1.算法的灵敏度不同,具体表现在非步态信号的滤除不同,有的算法滤波更严格,也更精确。

     2.算法的缓冲带长度不同,具体表现在走了多少步以后算法认为人开始走路,此时算法才开始返回走路的步数,中间会有一段时间不返回任何数据。

三、自己实现记步算法可以保证算法的稳定性,以及一开始走路就可以立刻开始记步(当然这是不严谨的)

 

使用样例:

    StepDetector Step;
    //回调接口 
    StepDetector.StepDetectorCallback callback=new StepDetector.StepDetectorCallback() {
        @Override
        public void catchStep(int step) {
            //获取行走步数,行走步长、行走距离和行走状态
            Step.getStep();
            Step.getDistance();
            Step.getLength();
            Step.getState();
        }
    };

    //初始化
    Step=new StepDetector(callback);
    
    //传入加速度数据,为三轴加速度的标量和
    Step.refreshAcceleration(acc);

类型及算法实现代码:

***********************
*by jjwwwww
***********************
import java.util.Timer;
import java.util.TimerTask;

public class StepDetector {

    //回调接口
    public interface StepDetectorCallback{
        void catchStep(int step);
    }

    //行走状态,WALK行走;STAY静止
    public enum WalkState{
        WALK,
        STAY
    }
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值