欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android计步器算法原理_加速度传感器实现计步器源码下载

程序员文章站 2022-02-16 11:56:55
...

本Demo主要功能有记录行走的步数、行走的时间、根据录入的体重、步长可以计算出每天行走的历程、消耗的热量、对每天行走的历程进行记录、并给出星级评价、App判断人是否处于行走中、主要从以下几个方面判断


1、人如果走起来了、一般会连续多走几步、因此、如果没有连续4-5个波动、那么就极大可能是干扰

2、人走动的波动、比坐车产生的波动要大、因此可以看波峰波谷的高度、只检测高于某个高度的波峰波谷

3、人的反射神经决定了人快速动的极限、怎么都不可能两步之间小于0.2秒、因此间隔小于0.2秒的波峰波谷直接跳过通过重力加速计感应、重力变化的方向、大小、与正常走路或跑步时的重力变化比对、达到一定相似度时认为是在走路或跑步、实现起来很简单、只要手机有重力感应器就能实现

4、软件记步数的精准度跟用户的补偿以及体重有关、也跟用户设置的传感器的灵敏度有关系、在设置页面可以对相应的参数进行调节、一旦调节结束、可以重新开始、手机QQ早就加入了计算步幅功能、还能和好友PK“炫步”、本项目可以作为一个独立的模块放到合适的项目里面

Android计步器算法原理_加速度传感器实现计步器源码下载


StepCounterService代码(负责后台的需要长期运行的任务)

public class StepCounterService extends Service {

    public static Boolean FLAG = false;// 服务运行标志

    private SensorManager mSensorManager;// 传感器服务
    private StepDetector detector;// 传感器监听对象

    private PowerManager mPowerManager;// 电源管理服务
    private WakeLock mWakeLock;// 屏幕灯

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();

        FLAG = true;// 标记为服务正在运行

        // 创建监听器类,实例化监听对象
        detector = new StepDetector(this);

        // 获取传感器的服务,初始化传感器
        mSensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);
        // 注册传感器,注册监听器
        mSensorManager.registerListener(detector,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_FASTEST);

        // 电源管理服务
        mPowerManager = (PowerManager) this
                .getSystemService(Context.POWER_SERVICE);
        mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP, "S");
        mWakeLock.acquire();
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        FLAG = false;// 服务停止
        if (detector != null) {
            mSensorManager.unregisterListener(detector);
        }

        if (mWakeLock != null) {
            mWakeLock.release();
        }
    }

}


service负责后台的需要长期运行的任务、计步器服务、运行在后台的服务程序、完成了界面部分的开发后、就可以开发后台的服务类StepService、注册或注销传感器监听器、在手机屏幕状态栏显示通知、与StepActivity进行通信、走过的步数记到哪里了

源代码下载链接: 点击下载Android计步器源码 密码: aia5