А в режиме пешехода показывается не направление движения, а положение устройства по встроенному компасу.
Погрешность в 15 .. 30 градусов никто в режиме пешехода не заметит, а для оповещения и 3 градуса играют большую роль.
Так если скорость невысокая, значит надо просто определять направление движения за большее время усредняя показания.
Яндекс навигатор уже с трех-пяти километров в час начинает двигаться, правда скорость при этом определяет не точно.
К чему это... А к тому, что остается определить направление движения и разобраться с углом срабатывания. Я думаю, в основном главное отличить диаметрально противоположное движение, наверно с этим проблем не должно быть.
Теперь по углу срабатывания. Можно, допустим, если скорость ниже 15 км, то для всех точек программно угол оповещения умножать на два или даже три, но не более какой-то величины, допустим 90 градусов. Конечно частенько может фонить, особенно если рядом дублёры, но хоть как-то будет работать в условиях еле ползущего движения.
Что еще можно придумать. Так как скорость невысокая, то ограничить программно дистанцию оповещения, допустим до 300 метров, тем самым можно отсечь камеры у которых зона оповещения выставлена для высокой скорости и они расположены позже, чем камеры на полосу движения. Т.е. если скорость небольшая, то для оповещения должна быть в приоритете ближайшая по ходу движения камера.
Также на низких скоростях можно не оповещать о всех типах, кроме камер и засад, ну может пешеходный переход, перекресток и опасный участок дороги оставить на всякий случай.