Ну, вроде как, но вам нужно будет сделать много обработки ..
Вы можете делать частые показания акселерометра и интегрировать значения один раз, чтобы получить скорость . Это не даст вам точную начальную скорость, но через некоторое время она, вероятно, сработает (если вы не запустите, когда телефон едет в автомобиле). Смотрите также этот пост .
Теперь немного псевдокода:
Мы начинаем с t=0
и измеряем ускорение по всем трем осям.
a = get_acceleration()
vx = vx + a.x - gravity.x;
vy = vy + a.y - gravity.y;
vz = vz + a.z - gravity.z;
После этого в течение нескольких секунд сумма всех значений ускорения (если вы часто производите выборку, т. Е. 50 Гц) должна быть скоростью. Вам также необходимо выяснить, в каком направлении находится ваше устройство и, следовательно, сколько компонентов ускорения вы читаете из-за гравитации и компенсации.