I am developing an app which accesses accelerometer in order to detect a fall by measuring the values of acceleration in x,y and z directions. Below is my code, I have applied algorithm which uses two threshold values(min and max) rest of the algo you can see in the code itself. The problem i am facing is that the app is not displaying toast i have done some mild experiments with my friend's phone. After dropping my phone from a certain height(approximately 30 cm.) and catching it. But no toast appear on the screen.I am unable to identify whether there is a problem in my ALGO or TOAST. I don't know what to do next please help.
@Override
public void onSensorChanged(SensorEvent event) {
if (started) {
double x = event.values[0];
double y = event.values[1];
double z = event.values[2];
long timestamp = System.currentTimeMillis();
Data data = new Data(timestamp, x, y, z);
sensorData.add(data);
}
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
double gacc=SensorManager.STANDARD_GRAVITY;
double a=event.values[0];
double b=event.values[1];
double c=event.values[2];
long mintime=System.currentTimeMillis();
boolean min = false;
boolean max = false;
int m = 0;
double xyz=Math.round(Math.sqrt(Math.pow(a,2)+Math.pow(b,2)+Math.pow(c,2)));
if(xyz<=3.0){
min = true;
}
if(min==true){
m++;
if(xyz>=14){
max=true;
}
}
if(min && max==true){
Toast.makeText(MainActivity.this,"FALL DETECTED!",Toast.LENGTH_LONG).show();
m=0;
min=false;
max=false;
}
if (m>4) {
m=0;
min=false;
max=false;
}
}
}