Android中计步器的实现
计步器的原理是通过手机的前后摆动模拟步伐节奏检测。我们本身在手机的传感器中就有计步器的传感器,所以这里我们直接上代码。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/tv_step"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="设备检测到您当前走了0步,总计数为0步"android:textColor="@color/black"android:textSize="17sp" />
</LinearLayout>
MainActivity.java
public class MainActivity extends BaseActivityimplements SensorEventListener {private TextView tv_step;private SensorManager mSensorMgr;// 声明一个传感管理器对象private int mStep;private int mStepCount;@Overrideprotected MvcBaseModel getModelImp() {return null;}@Overrideprotected int getContentLayoutId() {return R.layout.activity_main;}@Overrideprotected void initWidget() {tv_step = findViewById(R.id.tv_step);// 从系统服务中获取传感管理器对象mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);}@Overrideprotected void onPause() {super.onPause();// 注销当前活动的传感监听器mSensorMgr.unregisterListener(this);}@Overrideprotected void onResume() {super.onResume();//注册步行检测mSensorMgr.registerListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),SensorManager.SENSOR_DELAY_NORMAL);//注册步行计数mSensorMgr.registerListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),SensorManager.SENSOR_DELAY_NORMAL);}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR){//步行检测事件if (event.values[0] == 1.0f){mStep++;}}else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER){//计步器事件mStepCount = (int) event.values[0];}String desc = String.format("设备检测到您当前走了%d步,总计数为%d步",mStep,mStepCount);tv_step.setText(desc);}//当传感器精度改变时回调该方法,一般无需处理public void onAccuracyChanged(Sensor sensor, int accuracy) {}
}
这样我们就实现了计步器的功能。
Android中计步器的实现相关推荐
- android中的计步问题及计步传感器分析
今天打开博客,才发现居然有一年多没有写博客了... 最近由于公司要分析android上的计步问题,顺便把计步器在android上的实现跟踪了一下.结果发现悲催的是,android的api19上,是用的 ...
- Android中实现为TextView添加多个可点击的文本
这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下.具 ...
- android 弹出fragment,Android中ViewPager获取当前显示的Fragment
前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...
- android 读取内部存储文件格式,Android中的数据储存之文件存储
当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互 例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢 ...
- android中一种不支持的lua操作
今天写了一段lua代码,在win32中正常运行,在android中运行无效. 大概是这样的: ------file1.lua----- local t = {} t.str = "this ...
- Android中对Log日志文件的分析[转]
一,Bug出现了, 需要"干掉"它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只 ...
- 在Android中进行单元测试遇到的问题
问题1.Cannot connect to VM socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...
- android中设置控件获得焦点 (转)
android中,要使控件获得焦点,需要先setFocus,再requestFocus. 以Button为例: btn.setFocusable(true); ...
- Android中怎么使图片显示
android中经常到利用图片,利用图片时我们都是把图片放在drawable-xxx目录下,因为这里就是存储图片的地方,xxx不用理他,就是关于分辨率而已. 楼主在学习android的时候一直尝试把图 ...
最新文章
- python编程从入门到精通 叶维忠 pdf-叶维忠《Python编程从入门到精通》PDF
- 【web安全】Web应用隔离防护之Web弱口令爆破
- 跟随我在oracle学习php(14)
- 集群服务器分布式iis_Nginx+IIS分布式部署和负载均衡
- 数据结构树4-二叉搜索树2
- matlab 解相位_光测力学栅线投影技术-相位求解方法
- Win10右键添加获取管理员权限
- 用正则验证用户输入文本框的内容是否是中文汉字
- Windows 8 页面应用测试(2)
- maven学习记录一——maven介绍及入门
- SQL:数据库更新语句操作实例
- Linux perf 1.1、perf_event内核框架
- 超融合和服务器关系_超融合服务器和超融合一体机有什么区别
- 【SSM】13-Spring中实现依赖注入的两种方式(xml和注解)
- 2020年最新前端面试题(包含ES6+)
- 2016鄂教版小学信息技术初识计算机软件,鄂教版(2016)五年级全册信息技术 25.揭秘计算机工作世界--初识计算机工作原理 教案...
- JAVA简单课程设计有文档和源代码
- C# .net Framework Windows窗体应用【01】
- 成功的艺术家临摹,伟大的艺术家剽窃
- 问题 A: C语言11.1——完成一个对候选人得票的统计程序。
热门文章
- JavaSE——Day1——计算机基础知识、Java语言基础、JRE与JDK
- 浙江理工大学 我的编程之路 零基础学C/C++ 200题 标程/题解
- soho新工作 新娘秘書
- 中国石油大学《物理化学》第三阶段在线作业
- KNN算法原理与自实现电影分类
- 如何快速开发一个自己的微信小程序
- abs int 宏定义_【C语言】15-预处理指令1-宏定义
- 网络打印机计算机服务,如何把局域网中的所有计算机及打印机设置共享?
- python 语音识别培训使用Python和Keras创建简单语音识别引擎
- 关于jd-gui启动报This program requires Java 1.8+的错误