diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 1fe66132b..a7cb0557c 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -2,6 +2,9 @@ package org.libsdl.app; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import android.app.*; import android.content.*; @@ -922,6 +925,13 @@ class SDLJoystickHandler_API12 extends SDLJoystickHandler { public String name; public ArrayList axes; } + class RangeComparator implements Comparator + { + @Override + public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) { + return arg0.getAxis() - arg1.getAxis(); + } + } private ArrayList mJoysticks; @@ -948,8 +958,10 @@ class SDLJoystickHandler_API12 extends SDLJoystickHandler { joystick.name = joystickDevice.getName(); joystick.axes = new ArrayList(); - for (InputDevice.MotionRange range : joystickDevice.getMotionRanges()) { - if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { + List ranges = joystickDevice.getMotionRanges(); + Collections.sort(ranges, new RangeComparator()); + for (InputDevice.MotionRange range : ranges ) { + if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ) { joystick.axes.add(range); } }