Androidmianifest.xml
- <uses-feature Android:name="android.hardware.sensor.stepcounter"/>
- <uses-feature Android:name="feature:android.hardware.sensor.stepdetector"/>
MianActivity.java
- package com.example.bushu_chuanganqi;
- import Android.App.Activity;
- import Android.content.Context;
- import Android.hardware.Sensor;
- import Android.hardware.SensorEvent;
- import Android.hardware.SensorEventListener;
- import Android.hardware.SensorManager;
- import Android.os.Bundle;
- import Android.widget.TextView;
- public class MainActivity extends Activity {
- private TextView mStepTV;
- private SensorManager mSensorManager;
- private MySensorEventListener mListener;
- private int mStepDetector = 0; // 自应用运行以来 STEP_DETECTOR 检测到的步数
- private int mStepCounter = 0; // 自系统开机以来 STEP_COUNTER 检测到的步数
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mStepTV = (TextView)findViewById(R.id.tv_step);
- mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
- mListener = new MySensorEventListener();
- }
- @Override
- protected void onResume() {
- super.onResume();
- mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),
- SensorManager.SENSOR_DELAY_NORMAL);
- mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),
- SensorManager.SENSOR_DELAY_NORMAL);
- }
- @Override
- protected void onPause() {
- super.onPause();
- mSensorManager.unregisterListener(mListener);
- }
- class MySensorEventListener implements SensorEventListener {
- @Override
- public void onSensorChanged(SensorEvent event) {
- System.out.println("@@@:"+event.sensor.getType()+"--"+Sensor.TYPE_STEP_DETECTOR+"--"+Sensor.TYPE_STEP_COUNTER);
- if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
- if (event.values[0] == 1.0f) {
- mStepDetector++;
- }
- } else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
- mStepCounter = (int) event.values[0];
- }
- String desc = String.format("设备检测到您当前走了 %d 步, 自开机以来总数为 %d 步", mStepDetector, mStepCounter);
- mStepTV.setText(desc);
- }
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- }
- }
- }
layout 中
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- Android:layout_width="match_parent"
- Android:layout_height="match_parent"
- tools:context=".MainActivity">
- <TextView
- Android:id="@+id/tv_step"
- Android:layout_width="wrap_content"
- Android:layout_height="wrap_content"
- Android:text="走一走, 看看有什么"
- Android:textSize="20sp" />
- </LinearLayout>
来源: http://www.bubuko.com/infodetail-3373705.html