Android 计步功能-简单实现


使用Android4.4 Kitkat 新增的STEP DETECTOR 以及 STEP COUNTER传感器。

官方介绍:

TYPE_STEP_COUNTER:计步器(记录历史步数累加值)

int TYPE_STEP_COUNTER



A constant describing a step counter sensor.

A sensor of this type returns the number of steps taken by the user since the last reboot while activated. The value is returned as a float (with the fractional part set to zero) and is reset to zero only on a system reboot. The timestamp of the event is set to the time when the last step for that event was taken. This sensor is implemented in hardware and is expected to be low power. If you want to continuously track the number of steps over a long period of time, do NOT unregister for this sensor, so that it keeps counting steps in the background even when the AP is in suspend mode and report the aggregate count when the AP is awake. Application needs to stay registered for this sensor because step counter does not count steps if it is not activated. This sensor is ideal for fitness tracking applications. It is defined as an  REPORTING_MODE_ON_CHANGEsensor.

See  SensorEvent.values for more details.

Constant Value: 19 (0x00000013)

TYPE_STEP_DETECTOR:检测器(检测每次步伐数据)


int TYPE_STEP_DETECTOR




A constant describing a step detector sensor.

A sensor of this type triggers an event each time a step is taken by the user. The only allowed value to return is 1.0 and an event is generated for each step. Like with any other event, the timestamp indicates when the event (here the step) occurred, this corresponds to when the foot hit the ground, generating a high variation in acceleration. This sensor is only for detecting every individual step as soon as it is taken, for example to perform dead reckoning. If you only need aggregate number of steps taken over a period of time, register for  TYPE_STEP_COUNTER instead. It is defined as a  REPORTING_MODE_SPECIAL_TRIGGER sensor.

See  SensorEvent.values for more details.

Constant Value: 18 (0x00000012)

使用内容:
Sensor:
SensorEvent:
SensorManager:
SensorEventListener:

使用:
1、使用传感器之前首先获取SensorManager通过系统服务获取:
SensorManager  mSensorManager = (SensorManager) getSystemService( SENSOR_SERVICE);

2、获取我们需要的传感器类型:
//单次有效计步
Sensor  mStepCount = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
//系统计步累加值
Sensor  mStepDetector = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);

3、注册监听者(监听传感器事件)
mSensorManager.registerListener(this, mStepDetector, SensorManager. SENSOR_DELAY_FASTEST);

mSensorManager.registerListener(this, mStepCount, SensorManager. SENSOR_DELAY_FASTEST);

PS:取消注册:
mSensorManager.unregisterListener(this, mStepDetector);

mSensorManager.unregisterListener(this, mStepCount);

4、实现SensorEventListener接口,重写方法并获取数据:
从监听到的传感器事件中选取合适的类型,获得数据:
@Override

public void onSensorChanged(SensorEvent event) {

    if (event.sensor.getType() ==  sensorTypeC) {

            //event.values[0]为计步历史累加值

        tvAllCount.setText(event.values[0] + "步");

    }

    if (event.sensor.getType() ==  sensorTypeD) {

        if (event.values[0] == 1.0) {

            mDetector++;

            //event.values[0]一次有效计步数据

            tvTempCount.setText(mDetector + "步");

        }

    }

}








Summary

1、计步器数据会在手机重启后清零,因此此处需要注意根据需要来做数据保护。
2、计步器启动需要在检测器启动的基础上才能实现,因此要先启动检测器。
3、


资料:
Android4.4 新增传感器

android中的计步问题及计步传感器分析

一个简单的计步器使用Demo:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值