1) Вы можете использовать действие recognition api
для обнаружения движения, это даст вам начальную и конечную точку
2) скорость, которую вы можете получить по скорости = location.getSpeed()
;или вы можете сохранить широту и долготу с отметкой времени, чтобы вы могли рассчитать расстояние между двумя делениями широты и долготы по истекшему времени, которое даст вам скорость.
3) на основе ускорения вы можете рассчитать резкое ускорение или резкое прерывание, используя линейнуюЗначение ускорения по сравнению с последним значением ускорения можно рассчитать как
SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
для расчета резкого ускорения и разрушения. Вам нужно будет рассчитать значение G-силы по ускорению.
Примечание: эти вычисления необходимо выполнять в сервисе (сервис приоритетного уровня, если вы хотите, чтобы местоположение отслеживалось в фоновом режиме