Сегодня я напишу простое приложение, которое использует счетчик шагов. Это пример приложения-шагомера, которое будет регистрировать события датчика и обновлять пользовательский интерфейс при новом шаге.
Код SensorManager.SENSOR_DELAY_NORMAL указывает как часто будут обновляться данные.
Я буду использовать датчик TYPE_STEP_COUNTER, который периодически отправляет событие с общим количеством шагов, когда будет сделан новый шаг .
Убедитесь, что вы должны проверяете код на Nexus 5 под управлением KitKat, потому что это API была добавлена в KitKat, а Nexus 5 является первым устройством с низким энергопотреблением при использовании данного чипа.
Теперь выполните следующие действия для создания приложения-шагомера.
Шаг 1) Создайте новый проект в AndroidStudio.
Шаг 2) Напишите следующий код в layout-файл:
Доставка цветов по Качугу среди-цветов.ру.
<?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:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Step count since reboot:"
android:textColor="@android:color/white">
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textSize="36dp">
</LinearLayout>
А вот этот код напишите в ваш java-файл:
package com.example.stepcounter;
import android.app.Activity;
import android.content.Context;
import android.hardware.*;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private TextView count;
boolean activityRunning;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
count = (TextView) findViewById(R.id.count);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
activityRunning = true;
Sensor countSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (countSensor != null) {
sensorManager.registerListener(this, countSensor,
SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(this, "Count sensor not available!",
Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
super.onPause();
activityRunning = false;
// if you unregister the last listener, the hardware will stop detecting
// step events
// sensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (activityRunning) {
count.setText(String.valueOf(event.values[0]));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Запустите это приложение на устройство, на Android 4.4 или более поздней версии, и вы увидите счетчик увеличивается с каждым шагом.

