Предложение фильтра может быть в порядке, но это не решает проблему: пик будет сглажен, но останется.
Если вы отключили события касания, эти пики будут выглядеть как касание с очень небольшим интервалом времени по сравнению с предыдущим (0,001215 мс), которому предшествует касание с большим интервалом времени.
distance = 17.269917, timeDelta = 0.016132, speed = 1070.504639
distance = 15.206906, timeDelta = 0.017494, speed = 869.251709
distance = 15.882380, timeDelta = 0.017583, speed = 903.297546
distance = 14.983324, timeDelta = 0.030101, speed = 497.771088 //low peak
distance = 15.435349, timeDelta = 0.001215, speed = 12703.991211 //high peak!
distance = 15.882380, timeDelta = 0.017343, speed = 915.795898
distance = 15.890248, timeDelta = 0.016302, speed = 974.742249
distance = 16.560495, timeDelta = 0.016468, speed = 1005.606445
distance = 16.101242, timeDelta = 0.017291, speed = 931.201050
Что я делаю, так это вычисляю среднюю дельту времени между недавними событиями касания, и если происходит касание с ненормальной дельтой времени (± 30%), я игнорирую его скорость (сохраняя скорость предыдущего события)