diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java index d9b41a4222..64efa4343f 100644 --- a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java +++ b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java @@ -51,6 +51,7 @@ public class SDLControllerManager protected static SDLJoystickHandler mJoystickHandler; protected static SDLHapticHandler mHapticHandler; + protected static SDLDeviceListener mDeviceListener; private static final String TAG = "SDLControllerManager"; @@ -71,10 +72,21 @@ public class SDLControllerManager } static void initializeDeviceListener() { - InputManager im = (InputManager) SDL.getContext().getSystemService(Context.INPUT_SERVICE); - im.registerInputDeviceListener(new SDLDeviceListener(), null); + if (mDeviceListener == null) { + mDeviceListener = new SDLDeviceListener(); + + InputManager im = (InputManager) SDL.getContext().getSystemService(Context.INPUT_SERVICE); + im.registerInputDeviceListener(mDeviceListener, null); + } } + static void shutdownDeviceListener() { + if (mDeviceListener != null) { + InputManager im = (InputManager) SDL.getContext().getSystemService(Context.INPUT_SERVICE); + im.unregisterInputDeviceListener(mDeviceListener); + mDeviceListener = null; + } + } // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance static public boolean handleJoystickMotionEvent(MotionEvent event) {