Android计步器的原理其实是通过手机的前后摆动模拟步伐节奏的监测。Android中与计步器有关的传感器有两个,一个是步行检测(TYPE_STEP_DETECTOR),另一个是步行计数(TYPE_STEP_COUNTER)。其中,步行检测的返回值为1时,表示当前检测到一个步伐;步行计数的返回值是累加后的数值,表示本次开机激活后的总步伐数。

  • layout/activity_main.xml界面布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextView
        android:id="@+id/tv_step"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="走一走,看看有什么"android:textSize="20sp" /></LinearLayout>
  • MainActivity.java逻辑代码如下:
package com.fukaimei.steptest;import java.util.List;import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;public class MainActivity extends AppCompatActivity implements SensorEventListener {private TextView tv_step;private SensorManager mSensroMgr;private int mStepDetector = 0;private int mStepCounter = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_step = (TextView) findViewById(R.id.tv_step);mSensroMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);}@Overrideprotected void onPause() {super.onPause();mSensroMgr.unregisterListener(this);}@Overrideprotected void onResume() {super.onResume();int suitable = 0;List<Sensor> sensorList = mSensroMgr.getSensorList(Sensor.TYPE_ALL);for (Sensor sensor : sensorList) {if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {suitable += 1;} else if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) {suitable += 10;}}if (suitable/10>0 && suitable%10>0) {mSensroMgr.registerListener(this,mSensroMgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),SensorManager.SENSOR_DELAY_NORMAL);mSensroMgr.registerListener(this,mSensroMgr.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),SensorManager.SENSOR_DELAY_NORMAL);} else {tv_step.setText("当前设备不支持计步器,请检查是否存在步行检测传感器和计步器传感器");}}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {if (event.values[0] == 1.0f) {mStepDetector++;}} else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {mStepCounter = (int) event.values[0];}String desc = String.format("设备检测到您当前走了%d步,总计数为%d步",mStepDetector, mStepCounter);tv_step.setText(desc);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}
}
  • 注意:安装的手机必须要含有步行检测(TYPE_STEP_DETECTOR)和步行计数(TYPE_STEP_COUNTER)传感器才能监测步数和计步。

  • Demo程序运行效果界面截图如下:


Android移动开发-调用步行检测和步行计数传感器开发简易计步器的实现相关推荐

  1. 人体检测--热释电传感器开发

    人体检测--热释电传感器开发 人体热释电传感器顾名思义是探测是否有人体通行和通过,由于它的廉价性,使得它的应用范围非常广泛.楼道里的灯,天台的报警设施等,都是利用这个来进行报警和检测. 本文章将分为两 ...

  2. java开发调用海康威视摄像头的web端页面开发心得

    最近在开发过程中  需要用到海康威视的摄像头 在web端展示  在各种百度之后 发现网上很难找到一个  简便,可靠的教程 在摸索着完成项目之后 ,决定写一篇攻略  造福有需求的小伙伴 言归正传 首先需 ...

  3. android jni 结构体_Android应用开发Android JNI-c/c++调用java方法

    本文将带你了解Android应用开发Android JNI-c/c++调用java方法,希望本文对大家学Android有所帮助. " Android   JNI-c/c++调用java方法, ...

  4. Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划

    2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...

  5. 用cocos2d-android开发android游戏时调用box2d中的native本地函数问题

    用cocos2d-android开发android游戏时调用box2d中的new World(Vector2,boolean)时,出现如下报错: "java.lang.Unsatisfied ...

  6. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

  7. Android应用开发性能优化完全分析,移动应用开发课程报告

    如下是我工作中一个项目的一次经历(我将代码回退特意抓取的),出现这个问题的场景是一次压力测试导致整个系统卡顿,瞬间杀掉应用就OK了,究其原因最终查到是一个API的调运位置写错了方式,导致一直被狂调,当 ...

  8. 关于openGL, openGL ES, openVG及android中2D调用关系的报告

    关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...

  9. 《 Android物联网开发从入门到实战》国内第一本开发书籍!

    今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...

最新文章

  1. c语言中eof_C语言的标准 “输入输出”!今天是你学C语言的第几天?
  2. 微软为什么从 C/C++ 转向了 Rust?
  3. LightBus新浪微博客户端开源下载
  4. 操作系统识别工具 xprobe2 p0f 简介
  5. php网站后台管理反应慢,phpcmsv9 后台操作反应慢的原因
  6. 字符串中统计单词个数
  7. 关于编辑器对input标签报错提示“表单输入没有相关label”的问题
  8. spring restTemplate使用方法
  9. Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)
  10. 阿里数据库内核月报:2015年06月
  11. GARFIELD@01-01-2005
  12. [LinuxVim]基础01
  13. Bash基础——快捷键
  14. [Python]小甲鱼Python视频第020课(函数:内嵌函数和闭包)课后题及参考解答
  15. 如何配置一个高效的 Mac 工作环境
  16. 大数据平台的作用有什么
  17. 考验AI对代词的理解力,解读艾伦AI研究所公布的数据集“QUOREF”
  18. 关于gp数据库的DK(GP)
  19. 如何有效实现软件的需求管理 - 4
  20. OpenFOAM动网格的壁面边界通量修正

热门文章

  1. 计算机系统引导顺序各选项,双系统启动顺序怎么设置和修复 双系统启动顺序设置及修复方法【图文】...
  2. 山东大学面向对象笔记 整理
  3. axios 的理解和使用
  4. matlab中行矢量,请教 错误使用 zeros 大小矢量必须是包含实数元素的行矢量
  5. 2022年压力焊操作证考试题库及在线模拟考试
  6. STM32单片机GPIO学习
  7. 【研发管理】全面质量管理与日本的崛起
  8. 信安Note_day15
  9. 什么是Ad-hoc Query
  10. 微信小程序模板消息还能群发?无限制推送?