From 2ab2016002074e2d5190b38957902a2edea19e2a Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Sun, 20 Jul 2014 12:04:22 +0200 Subject: [PATCH] Expose the Android system version to the app. Useful to enable/disable android-only features like immersive mode --- android/app-android.cpp | 13 ++++++++++++- .../com/henrikrydgard/libnative/NativeActivity.java | 2 +- .../src/com/henrikrydgard/libnative/NativeApp.java | 2 +- base/BlackberryMain.cpp | 2 ++ base/NativeApp.h | 4 ++++ base/PCMain.cpp | 2 ++ base/QtMain.cpp | 2 ++ 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/android/app-android.cpp b/android/app-android.cpp index 7837d43b46..fd497ba645 100644 --- a/android/app-android.cpp +++ b/android/app-android.cpp @@ -53,6 +53,7 @@ static float hat_joystick_y_async; int optimalFramesPerBuffer = 0; int optimalSampleRate = 0; +static int androidVersion; // Android implementation of callbacks to the Java part of the app void SystemToast(const char *text) { @@ -103,6 +104,15 @@ std::string System_GetProperty(SystemProperty prop) { } } +int System_GetPropertyInt(SystemProperty prop) { + switch (prop) { + case SYSPROP_SYSTEMVERSION: + return androidVersion; + default: + return -1; + } +} + // Remember that all of these need initialization on init! The process // may be reused when restarting the game. Globals are DANGEROUS. @@ -154,7 +164,7 @@ extern "C" jstring Java_com_henrikrydgard_libnative_NativeApp_queryConfig extern "C" void Java_com_henrikrydgard_libnative_NativeApp_init (JNIEnv *env, jclass, jstring jdevicetype, jstring jlangRegion, jstring japkpath, jstring jdataDir, jstring jexternalDir, jstring jlibraryDir, jstring jshortcutParam, - jstring jinstallID, jboolean juseNativeAudio) { + jstring jinstallID, jboolean juseNativeAudio, jint jAndroidVersion) { jniEnvUI = env; ILOG("NativeApp.init() -- begin"); @@ -162,6 +172,7 @@ extern "C" void Java_com_henrikrydgard_libnative_NativeApp_init memset(&input_state, 0, sizeof(input_state)); renderer_inited = false; first_lost = true; + androidVersion = jAndroidVersion; g_buttonTracker.Reset(); diff --git a/android/src/com/henrikrydgard/libnative/NativeActivity.java b/android/src/com/henrikrydgard/libnative/NativeActivity.java index c8c29b2e73..43b5382b59 100644 --- a/android/src/com/henrikrydgard/libnative/NativeActivity.java +++ b/android/src/com/henrikrydgard/libnative/NativeActivity.java @@ -211,7 +211,7 @@ public class NativeActivity extends Activity { String languageRegion = Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry(); NativeApp.audioConfig(optimalFramesPerBuffer, optimalSampleRate); - NativeApp.init(deviceType, languageRegion, apkFilePath, dataDir, externalStorageDir, libraryDir, shortcutParam, installID, useOpenSL()); + NativeApp.init(deviceType, languageRegion, apkFilePath, dataDir, externalStorageDir, libraryDir, shortcutParam, installID, useOpenSL(), Build.VERSION.SDK_INT); // OK, config should be initialized, we can query for screen rotation. if (Build.VERSION.SDK_INT >= 9) { diff --git a/android/src/com/henrikrydgard/libnative/NativeApp.java b/android/src/com/henrikrydgard/libnative/NativeApp.java index 39407b1cd2..a45fcdea13 100644 --- a/android/src/com/henrikrydgard/libnative/NativeApp.java +++ b/android/src/com/henrikrydgard/libnative/NativeApp.java @@ -9,7 +9,7 @@ public class NativeApp { public final static int DEVICE_ID_MOUSE = 2; public final static int DEVICE_ID_PAD_0 = 10; - public static native void init(String deviceType, String languageRegion, String apkPath, String dataDir, String externalDir, String libraryDir, String shortcutParam, String installID, boolean useOpenSL); + public static native void init(String deviceType, String languageRegion, String apkPath, String dataDir, String externalDir, String libraryDir, String shortcutParam, String installID, boolean useOpenSL, int androidVersion); public static native void audioInit(); public static native void audioShutdown(); diff --git a/base/BlackberryMain.cpp b/base/BlackberryMain.cpp index 36cf8e3901..338639baa6 100644 --- a/base/BlackberryMain.cpp +++ b/base/BlackberryMain.cpp @@ -44,6 +44,8 @@ std::string System_GetProperty(SystemProperty prop) { } } +int System_GetPropertyInt(SystemProperty prop) {return -1;} + void System_SendMessage(const char *command, const char *parameter) { if (!strcmp(command, "finish")) { g_quitRequested = true; diff --git a/base/NativeApp.h b/base/NativeApp.h index ec1e6c6233..cb6bf96004 100644 --- a/base/NativeApp.h +++ b/base/NativeApp.h @@ -123,6 +123,10 @@ enum SystemProperty { SYSPROP_NAME, SYSPROP_LANGREGION, SYSPROP_CPUINFO, + + // Available as Int: + SYSPROP_SYSTEMVERSION, }; std::string System_GetProperty(SystemProperty prop); +int System_GetPropertyInt(SystemProperty prop); \ No newline at end of file diff --git a/base/PCMain.cpp b/base/PCMain.cpp index 9aa39a4e43..6609ba13f5 100644 --- a/base/PCMain.cpp +++ b/base/PCMain.cpp @@ -286,6 +286,8 @@ std::string System_GetProperty(SystemProperty prop) { } } +int System_GetPropertyInt(SystemProperty prop) {return -1;} + InputState input_state; static const int legacyKeyMap[] { diff --git a/base/QtMain.cpp b/base/QtMain.cpp index 239ffad0e9..0a6ba0846f 100644 --- a/base/QtMain.cpp +++ b/base/QtMain.cpp @@ -66,6 +66,8 @@ std::string System_GetProperty(SystemProperty prop) { } } +int System_GetPropertyInt(SystemProperty prop) {return -1;} + void System_SendMessage(const char *command, const char *parameter) { if (!strcmp(command, "finish")) { qApp->exit(0);