
In questa guida vedremo come creare un’app contapassi Android Java sfruttando il sensore di passi integrato nello smartphone. In primo luogo, partiremo dalla configurazione del progetto in Android Studio e, successivamente, procederemo fino alla gestione degli eventi del sensore, con esempi pratici in Java facili da adattare alle tue esigenze. Si tratta, infatti, di un progetto molto richiesto e utile nella vita quotidiana, nonché perfetto per imparare a lavorare con i sensori e migliorare le proprie competenze Android. Continua quindi a leggere per scoprire passo dopo passo come implementare il contapassi e visualizzare in tempo reale il numero di passi sullo schermo.
Come creare un’app contapassi Android Java
In questo tutorial andremo a realizzare una semplice applicazione contapassi implementando il SensorEventListener all’interno della classe e sovrascrivendo i due metodi fondamentali. In particolare, il metodo onSensorChanged verrà attivato da un SensorEvent ogni volta che si verifica una modifica al Sensor, mentre onAccuracyChanged viene chiamato quando la precisione di un sensore è cambiata, fornendo la nuova precisione.
Struttura del progetto: MainActivity.java
MainActivity.Java:
package com.exsample.stepCounter.activities;
import android.app.Activity;
import android.os.Bundle;
import com.exsample.stepCounter.R;
import android.hardware.*;
import android.app.*;
import android.view.View.*;
import android.widget.*;
import android.hardware.SensorEventListener;
public class MainActivity extends Activity implements SensorEventListener{
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private float acceleration = 0.0f;
private float steps=0.0f;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=findViewById(R.id.txt);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
protected void onResume()
{
super.onResume();
mSensorManager.registerListener(this,
mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause()
{
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void onAccuracyChanged ( Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event)
{
if(event!=null)
{
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
acceleration = x*x+y*y+z*z;
text.setText(“”+steps);
}
if (acceleration>150)
{
steps++;
}
}
}
Layout dell’interfaccia: activity_main.xml
Questa guida ti ha mostrato come creare un’app contapassi Android Java funzionale utilizzando il SensorManager per accedere all’accelerometro del dispositivo. Implementando l’interfaccia SensorEventListener hai potuto gestire i due metodi fondamentali: da una parte, onSensorChanged cattura le variazioni dei dati dell’accelerometro, dall’altra, onAccuracyChanged consente di gestire i cambiamenti di precisione del sensore. In questo modo, la visualizzazione del conteggio dei passi in tempo reale tramite una TextView permette di fornire feedback immediato all’utente. Partendo da queste basi è possibile, inoltre, costruire funzionalità più avanzate, come il reset del contatore al termine della giornata, il salvataggio dei dati su database locale, l’utilizzo di un Toast o di un AlertDialog per notificare il raggiungimento di un obiettivo, l’integrazione con Google Fit per sincronizzare i dati con altri servizi Google, oppure l’aggiunta di grafici per visualizzare l’andamento dell’attività fisica nel tempo.
ActivityMain.xlm:
<?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”>
Un aspetto fondamentale nello sviluppo di un’app contapassi è testare sempre il codice su un dispositivo fisico reale: l’emulatore di Android Studio non simula i movimenti effettivi dell’accelerometro, quindi non potrai verificare il corretto funzionamento della app. Se il dispositivo supporta il sensore TYPE_STEP_COUNTER (introdotto in Android 4.4), valuta seriamente di utilizzarlo al posto dell’accelerometro: questo sensore è molto più preciso nel rilevare i passi e consuma significativamente meno batteria, poiché è gestito direttamente dall’hardware del dispositivo.
<TextView
android:layout_width=”90dp”
android:layout_height=”60dp”
android:id=”@+id/txt”
android:textAppearance=”?android:attr/textAppearanceMedium”
android:background=”#E5473D”
android:textSize=”40sp”/>
</LinearLayout>