Может ли кто-нибудь сказать мне, как я получаю тост, когда мобильный падает?

Я делаю андроид-проект, чтобы обнаружить, когда мобильный упадет, может кто-нибудь сказать мне, какой датчик следует использовать в моем приложении, я знаю, что акселерометр будет использовать для этой цели, но акселерометр может также обнаруживать, когда я встряхиваю телефон в моей руке, и я хочу получить тост только тогда, когда мобильный падает. вот мой код:

int count = 1;
    private boolean init;
    private Sensor mySensor;
    private SensorManager SM;
    private float x1, x2, x3;
    private static final float ERROR = (float) 7.0;
    private static final float SHAKE_THRESHOLD = 15.00f; // m/S**2
    private static final int MIN_TIME_BETWEEN_SHAKES_MILLISECS = 1000;
    private long mLastShakeTime;
       public void onSensorChanged(SensorEvent event) {

            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

                long curTime = System.currentTimeMillis();
                if ((curTime - mLastShakeTime) > MIN_TIME_BETWEEN_SHAKES_MILLISECS) {

                    float x = event.values[0];
                    float y = event.values[1];
                    float z = event.values[2];

                    double acceleration = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)
                            + Math.pow(z, 2))
                            - SensorManager.GRAVITY_EARTH;
                    Log.d("mySensor", "Acceleration is " + acceleration + "m/s^2");

                    if (acceleration > SHAKE_THRESHOLD) {
                        mLastShakeTime = curTime;
                        Toast.makeText(getApplicationContext(), "FALL DETECTED",
                                Toast.LENGTH_LONG).show();
    } } }}

Ответ 1

Привет всем, я сделал это сам по себе, немного изменил, избавил меня от этого, то есть просто взял две переменные, установил эти значения отрицательными и назвал их пороговым значением ускорения. спасибо всем

Ответ 2

Нет "датчика падения", ваша догадка в использовании акселерометра верна. Записывайте и измеряйте данные акселерометра, когда он падает, и вычитайте модель оттуда.

Ответ 3

Вам нужно использовать акселерометр. Но он обнаружит очень небольшое движение.

Единственный способ сделать это - получить разницу между двумя показаниями об изменении состояния.

Если он очень высок, мобильный совершил более длинные дистанции, скажем, упал с рук или изменил ненормальное положение, скажем, шок.

Ответ 4

Для этого мы должны использовать немного физики, любой объект, попадающий под влияние силы тяжести, имеет ускорение 9,8 м/с/с вниз (на Земле). SO с этими знаниями мы можем получить скорость нисходящего направления
1) на основе оси (ось Y) с помощью акселерометра, проверьте, что она направлена ​​вниз и
2) проверьте, равна ли она этой постоянной 9,8 м/с, а также проверьте

если скорость падения около 9,8 м/с показывает тост