Я вижу много ответов в Интернете, и все они имеют одинаковый скопированный код, но ни один из них не имеет объяснения математики, которую они используют. У меня есть URL к коду на tutorialspoint, который совпадает с ответами, которые я вижу на stackoverflow. Однако кто-то может объяснить мне эту часть кода:
private final SensorEventListener mSensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
mAccelLast = mAccelCurrent;
mAccelCurrent = (float) Math.sqrt((double) (x * x + y * y + z * z));
float delta = mAccelCurrent - mAccelLast;
// What is this doing?
mAccel = mAccel * 0.9f + delta;
if (mAccel > 12) {
Toast.makeText(getApplicationContext(), "Shake event detected", Toast.LENGTH_SHORT).show();
}
}
Что должна делать эта строка
mAccel = mAccel * 0.9f + delta;
Откуда взялся 0,9f и почему мы умножаем это само собой и добавление дельты? Моя физика не сильна, поэтому для меня это не очевидно.
https://www.tutorialspoint.com/how-to-detect-shake-event-in-android-app