当前位置 博文首页 > 文章内容

    Android实现计步器功能

    作者:shunshunshun18 栏目:未分类 时间:2021-03-31 14:44:29

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    本文实例为大家分享了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) {}
    }

    这样我们就实现了计步器的功能。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家博文。