Sto creando un'app in Android in cui ho bisogno di rilevare se la persona è caduta. So che questa domanda è stata posta e ha risposto a come utilizzare la matematica vettoriale in altri forum, ma non ne ottengo risultati accurati.Rileva se la persona cade verso il basso
Qui di seguito è il mio codice per rilevare la caduta:
@Override
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
if (arg0.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
double gvt=SensorManager.STANDARD_GRAVITY;
float vals[] = arg0.values;
//int sensor=arg0.sensor.getType();
double xx=arg0.values[0];
double yy=arg0.values[1];
double zz=arg0.values[2];
double aaa=Math.round(Math.sqrt(Math.pow(xx, 2)
+Math.pow(yy, 2)
+Math.pow(zz, 2)));
if (aaa<=6.0) {
min=true;
//mintime=System.currentTimeMillis();
}
if (min==true) {
i++;
if(aaa>=13.5) {
max=true;
}
}
if (min==true && max==true) {
Toast.makeText(FallDetectionActivity.this,"FALL DETECTED!!!!!" ,Toast.LENGTH_LONG).show();
i=0;
min=false;
max=false;
}
if (i>4) {
i=0;
min=false;
max=false;
}
}
}
Per spiegare il codice di cui sopra ho usato la somma vettoriale e controllando se il valore ha raggiunto inferiore o uguale a 6 (mentre caduta) e improvvisamente una maggiore di 13,5 (durante l'atterraggio) per confermare la caduta.
Ora mi è stato detto nel forum che se il dispositivo è ancora la somma vettoriale restituirà il valore di 9,8. Durante l'autunno dovrebbe essere vicino a 0 e dovrebbe arrivare a circa 20 durante l'atterraggio. Questo non sembra accadere nel mio caso. Per favore qualcuno può suggerire se sto sbagliando dovunque?
Il mio suggerimento è ... Trova un materasso e fai dei test da solo. Fai una piccola app registrando tutti i valori rilevanti e prendili da lì. – Cheesebaron
Ho fatto alcuni test sull'app e sono passati a circa 6 mentre cadevo, 15 mentre colpivo il terreno che non sono sicuro sia corretto o sbagliato. – Karan
Hai trovato il codice corretto per questo? Sono nello stesso posto, puoi postare la tua risposta, mi sarà molto utile.Grazie. –