Example #1
0
 @Override
 public boolean handleMotionEvent(MotionEvent event) {
   if ((event.getSource() & InputDevice.SOURCE_JOYSTICK) != 0) {
     int actionPointerIndex = event.getActionIndex();
     int action = event.getActionMasked();
     switch (action) {
       case MotionEvent.ACTION_MOVE:
         SDLJoystick joystick = getJoystick(event.getDeviceId());
         if (joystick != null) {
           for (int i = 0; i < joystick.axes.size(); i++) {
             InputDevice.MotionRange range = joystick.axes.get(i);
             /* Normalize the value to -1...1 */
             float value =
                 (event.getAxisValue(range.getAxis(), actionPointerIndex) - range.getMin())
                         / range.getRange()
                         * 2.0f
                     - 1.0f;
             SDLActivity.onNativeJoy(joystick.device_id, i, value);
           }
           for (int i = 0; i < joystick.hats.size(); i += 2) {
             int hatX =
                 Math.round(
                     event.getAxisValue(joystick.hats.get(i).getAxis(), actionPointerIndex));
             int hatY =
                 Math.round(
                     event.getAxisValue(joystick.hats.get(i + 1).getAxis(), actionPointerIndex));
             SDLActivity.onNativeHat(joystick.device_id, i / 2, hatX, hatY);
           }
         }
         break;
       default:
         break;
     }
   }
   return true;
 }