【转】 android 4.4 Step Counter Sensor计步器的使用

原文网址:http://blog.csdn.net/aikongmeng/article/details/40457233

Android 官方参考

https://source.android.com/devices/sensors/composite_sensors.html

https://developer.android.com/guide/topics/sensors/sensors_motion.html

Developer - Location and Sensors APIs

Developer - Sensors Overview

Sensors SDK API reference

Android Hardware Abstraction Layer - sensors.h

SensorManager

DEmo.zip下载

先简单实现下功能,明天在优化。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.example.stepdemp;  
  2.   
  3. import android.content.Context;  
  4. import android.hardware.Sensor;  
  5. import android.hardware.SensorEvent;  
  6. import android.hardware.SensorEventListener;  
  7. import android.hardware.SensorManager;  
  8. import android.widget.Toast;  
  9.   
  10. public class Pedometer implements SensorEventListener {  
  11.     private SensorManager mSensorManager;  
  12.     private Sensor mStepCount;  
  13.     private Sensor mStepDetector;  
  14.     private float mCount;//步行总数   
  15.     private float mDetector;//步行探测器   
  16.     private Context context;  
  17.     private static final int sensorTypeD=Sensor.TYPE_STEP_DETECTOR;  
  18.     private static final int sensorTypeC=Sensor.TYPE_STEP_COUNTER;  
  19.   
  20.     public Pedometer() {  
  21.   
  22.     }  
  23.     public Pedometer(Context context) {  
  24.         this.context = context;   
  25.         mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);  
  26.         mStepCount = mSensorManager.getDefaultSensor(sensorTypeC);  
  27.         mStepDetector = mSensorManager.getDefaultSensor(sensorTypeD);  
  28.     }  
  29.   
  30.     public void register(){   
  31.   
  32.         register(mStepCount, SensorManager.SENSOR_DELAY_FASTEST);  
  33.         register(mStepDetector, SensorManager.SENSOR_DELAY_FASTEST);  
  34.     }  
  35.   
  36.     public void unRegister(){  
  37.         mSensorManager.unregisterListener(this);  
  38.     }  
  39.   
  40.     private void register(Sensor sensor,int rateUs) {  
  41.         mSensorManager.registerListener(this, sensor, rateUs);   
  42.     }  
  43.   
  44.     @Override  
  45.     public void onAccuracyChanged(Sensor sensor, int accuracy) {   
  46.     }  
  47.   
  48.     @Override  
  49.     public void onSensorChanged(SensorEvent event) {           
  50.           
  51.         if (event.sensor.getType()==sensorTypeC) {   
  52.             setStepCount(event.values[0]);    
  53.         }  
  54.         if (event.sensor.getType()==sensorTypeD) {   
  55.             if (event.values[0]==1.0) {  
  56.                  mDetector++;  
  57.             }   
  58.         }  
  59.     }  
  60.   
  61.     public float getStepCount() {  
  62.         return mCount;  
  63.     }  
  64.   
  65.     private void setStepCount(float count) {  
  66.         this.mCount = count;  
  67.     }  
  68.       
  69.     public float getmDetector() {  
  70.         return mDetector;  
  71.     }  
  72.   
  73. }  
原文地址:https://www.cnblogs.com/wi100sh/p/4980387.html