Android硬件开发------计步传感器

本文深入探讨了Android手机中两种计步传感器的使用方法:TYPE_STEP_DETECTOR和TYPE_STEP_COUNTER。TYPE_STEP_DETECTOR用于监测应用运行期间的步数,而TYPE_STEP_COUNTER则连续记录总步数,无论应用是否在前台。文章详细解释了如何通过SensorManager注册监听器,获取传感器数据,并展示了实际的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一节《Android硬件开发------传感器介绍》中,简单介绍了Android手机的传感器类型,通过SensorManager引出传感器的使用方法,通过注册监听器,监听传感器返回的参数,本节开始就介绍几个传感器的使用。

1、计步传感器
在Sensor类中,有两个计步传感器的类型,分别是TYPE_STEP_DETECTORTYPE_STEP_COUNTER看似是两个类型一致的传感器类型,其实在使用的时候还是不一样的。

TYPE_STEP_DETECTOR:和其他传感器一样,先注册监听,得到传感器返回的结果。

sensorManager.registerListener(new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                float[] values = event.values;
                Log.e("TAG","values===="+values[0]);
                if(values[0] == 1.0f){
                    step ++;
                }
                tv_step.setText(step+"");
                Log.e("TAG","length==="+values.length);
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        },stepSensor,SensorManager.SENSOR_DELAY_NORMAL);

onSensorChanged方法中,values数组中保存的就是返回的步数,只有一个数据1.0f,也就是步数的计量单位,每走一步就会做一次回调。

2020-02-11 15:41:12.933 30445-30445/com.example.sensor E/TAG: values====1.0
2020-02-11 15:41:12.934 30445-30445/com.example.sensor E/TAG: length===1

TYPE_STEP_COUNTER :记录的是从传感器注册开始,到现在,记录的总步数,它始终是比TYPE_STEP_DETECTOR要多。

 sensorManager.registerListener(new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                float[] values = event.values;
                tv_all.setText(Float.toString(values[0]));
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        },stepcountSensor,SensorManager.SENSOR_DELAY_NORMAL);

测试计步器

(1)当我们打开APP的时候,查看总步数和当前走的步数:
在这里插入图片描述
(2)走了一会儿,走了59步,59步全部加在了总步数上;
在这里插入图片描述
(3)退出APP,再次重新登录
在这里插入图片描述
(4)又走了34步,总数加上
在这里插入图片描述
(5)那么我们不登录APP,走了一会儿,再次进入:
在这里插入图片描述
发现总步数又变了,就是增加了我们刚才行走的步数。因此我们可以得出结论:TYPE_STEP_DETECTOR就是监测当前我们打开APP的这段时间走的步数,退出重新登录,数据清零;TYPE_STEP_COUNTER 是不管我们在前台还是在后台,都会记录我们所走的步数。
所以,我们在设计计步器的时候,像微信运动这些,我们显示这一天所走的步数,就可以使用TYPE_STEP_COUNTER,而且在回调事件SensorEvent 中,除了values字段之外,还有timestamp字段,显示当前的时间戳;如果这一天过去了,就将步数清零,重新开始计数。
其实大部分的传感器的使用,都是如此,通过SensorManager获取具体的传感器对象,注册监听,获取回调。之后如果有项目中使用到传感器,会再介绍使用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Awesome_lay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值