Android移动开发-调用步行检测和步行计数传感器开发简易计步器的实现
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移动开发-调用步行检测和步行计数传感器开发简易计步器的实现相关推荐
- 人体检测--热释电传感器开发
人体检测--热释电传感器开发 人体热释电传感器顾名思义是探测是否有人体通行和通过,由于它的廉价性,使得它的应用范围非常广泛.楼道里的灯,天台的报警设施等,都是利用这个来进行报警和检测. 本文章将分为两 ...
- java开发调用海康威视摄像头的web端页面开发心得
最近在开发过程中 需要用到海康威视的摄像头 在web端展示 在各种百度之后 发现网上很难找到一个 简便,可靠的教程 在摸索着完成项目之后 ,决定写一篇攻略 造福有需求的小伙伴 言归正传 首先需 ...
- android jni 结构体_Android应用开发Android JNI-c/c++调用java方法
本文将带你了解Android应用开发Android JNI-c/c++调用java方法,希望本文对大家学Android有所帮助. " Android JNI-c/c++调用java方法, ...
- Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划
2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...
- 用cocos2d-android开发android游戏时调用box2d中的native本地函数问题
用cocos2d-android开发android游戏时调用box2d中的new World(Vector2,boolean)时,出现如下报错: "java.lang.Unsatisfied ...
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...
- Android应用开发性能优化完全分析,移动应用开发课程报告
如下是我工作中一个项目的一次经历(我将代码回退特意抓取的),出现这个问题的场景是一次压力测试导致整个系统卡顿,瞬间杀掉应用就OK了,究其原因最终查到是一个API的调运位置写错了方式,导致一直被狂调,当 ...
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...
- 《 Android物联网开发从入门到实战》国内第一本开发书籍!
今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...
最新文章
- c语言中eof_C语言的标准 “输入输出”!今天是你学C语言的第几天?
- 微软为什么从 C/C++ 转向了 Rust?
- LightBus新浪微博客户端开源下载
- 操作系统识别工具 xprobe2 p0f 简介
- php网站后台管理反应慢,phpcmsv9 后台操作反应慢的原因
- 字符串中统计单词个数
- 关于编辑器对input标签报错提示“表单输入没有相关label”的问题
- spring restTemplate使用方法
- Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)
- 阿里数据库内核月报:2015年06月
- GARFIELD@01-01-2005
- [LinuxVim]基础01
- Bash基础——快捷键
- [Python]小甲鱼Python视频第020课(函数:内嵌函数和闭包)课后题及参考解答
- 如何配置一个高效的 Mac 工作环境
- 大数据平台的作用有什么
- 考验AI对代词的理解力,解读艾伦AI研究所公布的数据集“QUOREF”
- 关于gp数据库的DK(GP)
- 如何有效实现软件的需求管理 - 4
- OpenFOAM动网格的壁面边界通量修正