欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现计步器功能

程序员文章站 2022-03-21 11:32:13
本文实例为大家分享了android实现计步器功能的具体代码,供大家参考,具体内容如下计步器的原理是通过手机的前后摆动模拟步伐节奏检测。我们本身在手机的传感器中就有计步器的传感器,所以这里我们直接上代码...

本文实例为大家分享了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" >
 
 <textview
  android: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 baseactivity
  implements sensoreventlistener {
 
 private textview tv_step;
 private sensormanager msensormgr;// 声明一个传感管理器对象
 private int mstep;
 private int mstepcount;
 
 @override
 protected mvcbasemodel getmodelimp() {
  return null;
 }
 
 @override
 protected int getcontentlayoutid() {
  return r.layout.activity_main;
 }
 
 @override
 protected void initwidget() {
  tv_step = findviewbyid(r.id.tv_step);
  // 从系统服务中获取传感管理器对象
  msensormgr = (sensormanager) getsystemservice(context.sensor_service);
 }
 
 @override
 protected void onpause() {
  super.onpause();
  // 注销当前活动的传感监听器
  msensormgr.unregisterlistener(this);
 }
 
 @override
 protected 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);
 }
 
 @override
 public 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 计步器