//Get the centered position for the joystick axis
        private float GetCenteredAxis(MotionEvent e, InputDevice device, Axis axis)
        {
            InputDevice.MotionRange range = device.GetMotionRange(axis, e.Source);
            if (range != null)
            {
                float flat  = range.Flat;
                float value = e.GetAxisValue(axis);
                if (System.Math.Abs(value) > flat)
                {
                    return(value);
                }
            }

            return(0);
        }
        private static float getCenteredAxis(MotionEvent evt, InputDevice device, Axis axis, int historyPos)
        {
            InputDevice.MotionRange range =
                device.GetMotionRange(axis, evt.Source);

            // A joystick at rest does not always report an absolute position of
            // (0,0). Use the getFlat() method to determine the range of values
            // bounding the joystick axis center.
            if (range != null)
            {
                float flat  = range.Flat;
                float value =
                    historyPos < 0 ? evt.GetAxisValue(axis):
                    evt.GetHistoricalAxisValue(axis, historyPos);

                // Ignore axis values that are within the 'flat' region of the
                // joystick axis center.
                if (Math.Abs(value) > flat)
                {
                    return(value);
                }
            }
            return(0);
        }