Сегодня я напишу простое приложение, которое использует счетчик шагов. Это пример приложения-шагомера, которое будет регистрировать события датчика и обновлять пользовательский интерфейс при новом шаге.
Код 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 или более поздней версии, и вы увидите счетчик увеличивается с каждым шагом.