I am implementing the fall detection using accelerometer sensor, and create below code.
public void onSensorChanged(SensorEvent foEvent) {
if (f
You are on the right track. It can detect fall! But it also detect other non-fall events. My suggestion is instead of single point thresholding (e.g. magnitude > 30), get a time interval of accelerometer readings (e.g. 1 second). I am sure that that the readings for fall, running, and driving will be very different statistically (e.g. mean, variance). I hope this can serve as a starting point for your next iteration of detection algorithm.
It is very likely that the readings will be different from machine to machine since the accelerometers they use are different and may have different sensitivity.
I got some solution not sure its work for all or not, but i am using below code and its working for me.
if (foEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
double loX = foEvent.values[0];
double loY = foEvent.values[1];
double loZ = foEvent.values[2];
double loAccelerationReader = Math.sqrt(Math.pow(loX, 2)
+ Math.pow(loY, 2)
+ Math.pow(loZ, 2));
DecimalFormat precision = new DecimalFormat("0.00");
double ldAccRound = Double.parseDouble(precision.format(loAccelerationReader));
if (ldAccRound > 0.3d && ldAccRound < 0.5d) {
//Do your stuff
}
}