Update Android SDK required to API level 16

Sylvain

Some API 16 methods are used (InputDevice: getDescriptor(), getVibrator()), so we need to compile at least with SDK API 16. Hence default.properties and project.properties have been modified to use android-16.

There are also some modification to SDLActivity.java not to use getVibrator() if we run under API 16. And not to check to presence of hasVibrator() if we are under API 11.
-some hard-coded constant can be expandend.
- rename a local variable (hasVibrator to hasVibratorService)
This commit is contained in:
Sam Lantinga 2017-08-31 15:12:08 -07:00
parent b54bcb34d0
commit 6c38c9007b
4 changed files with 46 additions and 38 deletions

View File

@ -8,4 +8,4 @@
# project structure. # project structure.
# Project target. # Project target.
target=android-12 target=android-16

View File

@ -11,4 +11,4 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target. # Project target.
target=android-12 target=android-16

View File

@ -355,8 +355,8 @@ public class SDLActivity extends Activity {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_UP ||
keyCode == KeyEvent.KEYCODE_CAMERA || keyCode == KeyEvent.KEYCODE_CAMERA ||
keyCode == 168 || /* API 11: KeyEvent.KEYCODE_ZOOM_IN */ keyCode == KeyEvent.KEYCODE_ZOOM_IN || /* API 11 */
keyCode == 169 /* API 11: KeyEvent.KEYCODE_ZOOM_OUT */ keyCode == KeyEvent.KEYCODE_ZOOM_OUT /* API 11 */
) { ) {
return false; return false;
} }
@ -1166,7 +1166,7 @@ public class SDLActivity extends Activity {
mapping.put(KeyEvent.KEYCODE_ENTER, button); mapping.put(KeyEvent.KEYCODE_ENTER, button);
} }
if ((buttonFlags[i] & 0x00000002) != 0) { if ((buttonFlags[i] & 0x00000002) != 0) {
mapping.put(111, button); /* API 11: KeyEvent.KEYCODE_ESCAPE */ mapping.put(KeyEvent.KEYCODE_ESCAPE, button); /* API 11 */
} }
} }
button.setText(buttonTexts[i]); button.setText(buttonTexts[i]);
@ -1688,7 +1688,7 @@ class DummyEdit extends View implements View.OnKeyListener {
outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
| 33554432 /* API 11: EditorInfo.IME_FLAG_NO_FULLSCREEN */; | EditorInfo.IME_FLAG_NO_FULLSCREEN /* API 11 */;
return ic; return ic;
} }
@ -1996,7 +1996,7 @@ class SDLHapticHandler {
public void pollHapticDevices() { public void pollHapticDevices() {
final int deviceId_VIBRATOR_SERVICE = 999999; final int deviceId_VIBRATOR_SERVICE = 999999;
boolean hasVibrator = false; boolean hasVibratorService = false;
int[] deviceIds = InputDevice.getDeviceIds(); int[] deviceIds = InputDevice.getDeviceIds();
// It helps processing the device ids in reverse order // It helps processing the device ids in reverse order
@ -2004,7 +2004,9 @@ class SDLHapticHandler {
// so the first controller seen by SDL matches what the receiver // so the first controller seen by SDL matches what the receiver
// considers to be the first controller // considers to be the first controller
for(int i=deviceIds.length-1; i>-1; i--) { if (Build.VERSION.SDK_INT >= 16)
{
for (int i = deviceIds.length-1; i > -1; i--) {
SDLHaptic haptic = getHaptic(deviceIds[i]); SDLHaptic haptic = getHaptic(deviceIds[i]);
if (haptic == null) { if (haptic == null) {
InputDevice device = InputDevice.getDevice(deviceIds[i]); InputDevice device = InputDevice.getDevice(deviceIds[i]);
@ -2019,12 +2021,18 @@ class SDLHapticHandler {
} }
} }
} }
}
/* Check VIBRATOR_SERVICE */ /* Check VIBRATOR_SERVICE */
{
Vibrator vib = (Vibrator) SDLActivity.mSingleton.getContext().getSystemService(Context.VIBRATOR_SERVICE); Vibrator vib = (Vibrator) SDLActivity.mSingleton.getContext().getSystemService(Context.VIBRATOR_SERVICE);
if (vib != null && vib.hasVibrator()) { if (vib != null) {
hasVibrator = true; if (Build.VERSION.SDK_INT >= 11) {
hasVibratorService = vib.hasVibrator();
} else {
hasVibratorService = true;
}
if (hasVibratorService) {
SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE); SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE);
if (haptic == null) { if (haptic == null) {
haptic = new SDLHaptic(); haptic = new SDLHaptic();
@ -2046,7 +2054,7 @@ class SDLHapticHandler {
if (device_id == deviceIds[j]) break; if (device_id == deviceIds[j]) break;
} }
if (device_id == deviceId_VIBRATOR_SERVICE && hasVibrator) { if (device_id == deviceId_VIBRATOR_SERVICE && hasVibratorService) {
// don't remove the vibrator if it is still present // don't remove the vibrator if it is still present
} else if (j == deviceIds.length) { } else if (j == deviceIds.length) {
removedDevices.add(device_id); removedDevices.add(device_id);

View File

@ -10,14 +10,14 @@ The rest of this README covers the old style build process.
Requirements Requirements
================================================================================ ================================================================================
Android SDK (version 12 or later) Android SDK (version 16 or later)
https://developer.android.com/sdk/index.html https://developer.android.com/sdk/index.html
Android NDK r7 or later Android NDK r7 or later
https://developer.android.com/tools/sdk/ndk/index.html https://developer.android.com/tools/sdk/ndk/index.html
Minimum API level supported by SDL: 10 (Android 2.3.3) Minimum API level supported by SDL: 10 (Android 2.3.3)
Joystick support is available for API level >=12 devices. Joystick support is available for API level >= 12 devices.
================================================================================ ================================================================================
How the port works How the port works