diff --git a/android-project/src/org/libsdl/app/SDLControllerManager.java b/android-project/src/org/libsdl/app/SDLControllerManager.java index c050764da..ef946acd5 100644 --- a/android-project/src/org/libsdl/app/SDLControllerManager.java +++ b/android-project/src/org/libsdl/app/SDLControllerManager.java @@ -300,7 +300,7 @@ class SDLHapticHandler { public void pollHapticDevices() { final int deviceId_VIBRATOR_SERVICE = 999999; - boolean hasVibrator = false; + boolean hasVibratorService = false; int[] deviceIds = InputDevice.getDeviceIds(); // It helps processing the device ids in reverse order @@ -308,37 +308,45 @@ class SDLHapticHandler { // so the first controller seen by SDL matches what the receiver // considers to be the first controller - for(int i=deviceIds.length-1; i>-1; i--) { - SDLHaptic haptic = getHaptic(deviceIds[i]); - if (haptic == null) { - InputDevice device = InputDevice.getDevice(deviceIds[i]); - Vibrator vib = device.getVibrator(); - if (vib.hasVibrator()) { - haptic = new SDLHaptic(); - haptic.device_id = deviceIds[i]; - haptic.name = device.getName(); - haptic.vib = vib; - mHaptics.add(haptic); - SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name); + if (Build.VERSION.SDK_INT >= 16) + { + for (int i = deviceIds.length - 1; i > -1; i--) { + SDLHaptic haptic = getHaptic(deviceIds[i]); + if (haptic == null) { + InputDevice device = InputDevice.getDevice(deviceIds[i]); + Vibrator vib = device.getVibrator(); + if (vib.hasVibrator()) { + haptic = new SDLHaptic(); + haptic.device_id = deviceIds[i]; + haptic.name = device.getName(); + haptic.vib = vib; + mHaptics.add(haptic); + SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name); + } } } } /* Check VIBRATOR_SERVICE */ - { - Vibrator vib = (Vibrator) SDL.getContext().getSystemService(Context.VIBRATOR_SERVICE); - if (vib != null && vib.hasVibrator()) { - hasVibrator = true; - SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE); - if (haptic == null) { - haptic = new SDLHaptic(); - haptic.device_id = deviceId_VIBRATOR_SERVICE; - haptic.name = "VIBRATOR_SERVICE"; - haptic.vib = vib; - mHaptics.add(haptic); - SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name); - } - } + Vibrator vib = (Vibrator) SDL.getContext().getSystemService(Context.VIBRATOR_SERVICE); + if (vib != null) { + if (Build.VERSION.SDK_INT >= 11) { + hasVibratorService = vib.hasVibrator(); + } else { + hasVibratorService = true; + } + + if (hasVibratorService) { + SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE); + if (haptic == null) { + haptic = new SDLHaptic(); + haptic.device_id = deviceId_VIBRATOR_SERVICE; + haptic.name = "VIBRATOR_SERVICE"; + haptic.vib = vib; + mHaptics.add(haptic); + SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name); + } + } } /* Check removed devices */ @@ -350,8 +358,8 @@ class SDLHapticHandler { if (device_id == deviceIds[j]) break; } - if (device_id == deviceId_VIBRATOR_SERVICE && hasVibrator) { - // don't remove the vibrator if it is still present + if (device_id == deviceId_VIBRATOR_SERVICE && hasVibratorService) { + // don't remove the vibrator if it is still present } else if (j == deviceIds.length) { removedDevices.add(device_id); }