android 4.4 Step Counter Sensor计步器的试用

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下载

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

package com.example.stepdemp;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.widget.Toast;

public class Pedometer implements SensorEventListener {
	private SensorManager mSensorManager;
	private Sensor mStepCount;
	private Sensor mStepDetector;
	private float mCount;//步行总数 
	private float mDetector;//步行探测器 
	private Context context;
	private static final int sensorTypeD=Sensor.TYPE_STEP_DETECTOR;
	private static final int sensorTypeC=Sensor.TYPE_STEP_COUNTER;

	public Pedometer() {

	}
	public Pedometer(Context context) {
		this.context = context; 
		mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
		mStepCount = mSensorManager.getDefaultSensor(sensorTypeC);
		mStepDetector = mSensorManager.getDefaultSensor(sensorTypeD);
	}

	public void register(){ 

		register(mStepCount, SensorManager.SENSOR_DELAY_FASTEST);
		register(mStepDetector, SensorManager.SENSOR_DELAY_FASTEST);
	}

	public void unRegister(){
		mSensorManager.unregisterListener(this);
	}

	private void register(Sensor sensor,int rateUs) {
		mSensorManager.registerListener(this, sensor, rateUs); 
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) { 
	}

	@Override
	public void onSensorChanged(SensorEvent event) {		 
		
		if (event.sensor.getType()==sensorTypeC) { 
			setStepCount(event.values[0]);  
		}
		if (event.sensor.getType()==sensorTypeD) { 
			if (event.values[0]==1.0) {
				 mDetector++;
			} 
		}
	}

	public float getStepCount() {
		return mCount;
	}

	private void setStepCount(float count) {
		this.mCount = count;
	}
	
	public float getmDetector() {
		return mDetector;
	}

}



评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值