Fix fling to Dpad events conversion for VirtualNavigationTouchpad

SyntheticTouchNavigationHandler in ViewRootImpl uses GestureDetector
to convert touch navigation flings into Dpad events, based on fling
velocity direction. GestureDetector internally uses VelocityTracker,
which uses LSQ2 for x and y axes by default. Since LSQ2 velocity
calculation has a known issue of miscalculating velocity direction,
we use impulse strategy for fling velocity calculation during the
conversion of fling to Dpad events for VirtualNavigationTouchpad.

Flag: android.companion.virtual.flags.impulse_velocity_strategy_for_touch_navigation
Test: atest VirtualNavigationTouchpadTest
Fixes: 338426241
Change-Id: I14c5bcd7848ff8c5c989023e518f5b8936df3d15
4 files changed