import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.InputDevice.MotionRange;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
public InputDeviceState(InputDevice device) {
mDevice = device;
- mAxes = device.getMotionAxes();
- mAxisValues = new float[mAxes.length];
+
+ int numAxes = 0;
+ for (MotionRange range : device.getMotionRanges()) {
+ if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
+ numAxes += 1;
+ }
+ }
+
+ mAxes = new int[numAxes];
+ mAxisValues = new float[numAxes];
+ int i = 0;
+ for (MotionRange range : device.getMotionRanges()) {
+ if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
+ numAxes += 1;
+ }
+ mAxes[i++] = range.getAxis();
+ }
+
mKeys = new SparseIntArray();
}
private static float getCenteredAxis(MotionEvent event, InputDevice device,
int axis, int historyPos) {
- final InputDevice.MotionRange range = device.getMotionRange(axis);
+ final InputDevice.MotionRange range = device.getMotionRange(axis, event.getSource());
if (range != null) {
final float flat = range.getFlat();
final float value = historyPos < 0 ? event.getAxisValue(axis)