android.view.InputDevice.MotionRange Java Examples
The following examples show how to use
android.view.InputDevice.MotionRange.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: AxisMappingDialogPreference.java From crazyflie-android-client with GNU General Public License v2.0 | 6 votes |
@Override public boolean onGenericMotion(View v, MotionEvent event) { if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 && event.getAction() == MotionEvent.ACTION_MOVE) { List<MotionRange> motionRanges = event.getDevice().getMotionRanges(); for(MotionRange mr : motionRanges){ int axis = mr.getAxis(); if(event.getAxisValue(axis) > 0.5 || event.getAxisValue(axis) < -0.5){ Log.i(TAG, "Axis found: " + MotionEvent.axisToString(axis)); this.mAxisName = MotionEvent.axisToString(axis); mValueTextView.setText(mAxisName); } } }else{ Log.i(TAG, "Not a joystick event."); } return true; }
Example #2
Source File: AndroidJoystickJoyInput14.java From jmonkeyengine with BSD 3-Clause "New" or "Revised" License | 4 votes |
public List<Joystick> loadJoysticks(int joyId, InputManager inputManager) { logger.log(Level.INFO, "loading Joystick devices"); ArrayList<Joystick> joysticks = new ArrayList<Joystick>(); joysticks.clear(); joystickIndex.clear(); ArrayList<Integer> gameControllerDeviceIds = new ArrayList<>(); int[] deviceIds = InputDevice.getDeviceIds(); for (int deviceId : deviceIds) { InputDevice dev = InputDevice.getDevice(deviceId); int sources = dev.getSources(); logger.log(Level.FINE, "deviceId[{0}] sources: {1}", new Object[]{deviceId, sources}); // Verify that the device has gamepad buttons, control sticks, or both. if (((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) || ((sources & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK)) { // This device is a game controller. Store its device ID. if (!gameControllerDeviceIds.contains(deviceId)) { gameControllerDeviceIds.add(deviceId); logger.log(Level.FINE, "Attempting to create joystick for device: {0}", dev); // Create an AndroidJoystick and store the InputDevice so we // can later correspond the input from the InputDevice to the // appropriate jME Joystick event AndroidJoystick joystick = new AndroidJoystick(inputManager, joyInput, dev, joyId+joysticks.size(), dev.getName()); joystickIndex.put(deviceId, joystick); joysticks.add(joystick); // Each analog input is reported as a MotionRange // The axis number corresponds to the type of axis // The AndroidJoystick.addAxis(MotionRange) converts the axis // type reported by Android into the jME Joystick axis List<MotionRange> motionRanges = dev.getMotionRanges(); for (MotionRange motionRange: motionRanges) { logger.log(Level.INFO, "motion range: {0}", motionRange.toString()); logger.log(Level.INFO, "axis: {0}", motionRange.getAxis()); JoystickAxis axis = joystick.addAxis(motionRange); logger.log(Level.INFO, "added axis: {0}", axis); } // InputDevice has a method for determining if a keyCode is // supported (InputDevice public boolean[] hasKeys (int... keys)). // But this method wasn't added until rev 19 (Android 4.4) // Therefore, we only can query the entire device and see if // any InputDevice supports the keyCode. This may result in // buttons being configured that don't exist on the specific // device, but I haven't found a better way yet. for (int keyCode: AndroidGamepadButtons) { logger.log(Level.INFO, "button[{0}]: {1}", new Object[]{keyCode, KeyCharacterMap.deviceHasKey(keyCode)}); if (KeyCharacterMap.deviceHasKey(keyCode)) { // add button even though we aren't sure if the button // actually exists on this InputDevice logger.log(Level.INFO, "button[{0}] exists somewhere", keyCode); JoystickButton button = joystick.addButton(keyCode); logger.log(Level.INFO, "added button: {0}", button); } } } } } loaded = true; return joysticks; }
Example #3
Source File: AndroidJoystickJoyInput14.java From jmonkeyengine with BSD 3-Clause "New" or "Revised" License | 4 votes |
protected JoystickAxis addAxis(MotionRange motionRange) { String name = MotionEvent.axisToString(motionRange.getAxis()); String original = MotionEvent.axisToString(motionRange.getAxis()); if (motionRange.getAxis() == MotionEvent.AXIS_X) { original = JoystickAxis.X_AXIS; } else if (motionRange.getAxis() == MotionEvent.AXIS_Y) { original = JoystickAxis.Y_AXIS; } else if (motionRange.getAxis() == MotionEvent.AXIS_Z) { original = JoystickAxis.Z_AXIS; } else if (motionRange.getAxis() == MotionEvent.AXIS_RZ) { original = JoystickAxis.Z_ROTATION; } else if (motionRange.getAxis() == MotionEvent.AXIS_HAT_X) { original = JoystickAxis.POV_X; } else if (motionRange.getAxis() == MotionEvent.AXIS_HAT_Y) { original = JoystickAxis.POV_Y; } String logicalId = JoystickCompatibilityMappings.remapComponent( getName(), original ); if( logicalId == null ? original != null : !logicalId.equals(original) ) { logger.log(Level.FINE, "Remapped: {0} to: {1}", new Object[]{original, logicalId}); } JoystickAxis axis = new DefaultJoystickAxis(getInputManager(), this, getAxisCount(), name, logicalId, true, true, motionRange.getFlat()); if (motionRange.getAxis() == MotionEvent.AXIS_X) { xAxis = axis; } if (motionRange.getAxis() == MotionEvent.AXIS_Y) { yAxis = axis; } if (motionRange.getAxis() == MotionEvent.AXIS_HAT_X) { povX = axis; } if (motionRange.getAxis() == MotionEvent.AXIS_HAT_Y) { povY = axis; } addAxis(axis); axisIndex.put(motionRange.getAxis(), axis); return axis; }