Estoy creando una aplicación en Android donde necesito detectar si la persona se ha caído. Sé que esta pregunta ha sido formulada y respondida sobre el uso de las matemáticas vectoriales en otros foros, pero no obtengo los resultados precisos.Detecta si la persona se cae
A continuación se muestra el código para detectar la caída:
@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;
}
}
}
Para explicar el código anterior he utilizado la suma de vectores y comprobar si el valor ha alcanzado inferior o igual a 6 (mientras otoño) y de repente mayor de 13.5 (mientras aterriza) para confirmar la caída.
Ahora me dijeron en los foros que si el dispositivo sigue siendo el vector sum devolverá el valor de 9.8. Mientras caiga, debería estar cerca de 0 y debería ir a alrededor de 20 mientras aterriza. Esto no parece suceder en mi caso. Por favor, ¿alguien puede sugerir si me estoy equivocando en alguna parte?
Mi sugerencia es ... Encuentre un colchón y haga algunas pruebas por su cuenta. Haga una pequeña aplicación registrando todos los valores relevantes y tómela desde allí. – Cheesebaron
He hecho algunas pruebas en la aplicación y va a alrededor de 6 mientras caigo, 15 al tocar el piso, lo que no estoy seguro es correcto o incorrecto. – Karan
¿Has encontrado el código de trabajo correcto para esto? Estoy en el mismo lugar, ¿pueden publicar su respuesta ?, será realmente útil para mí.Gracias. –