Added SDL_IsChromebook() to determine if we're running on a Chromebook.

This commit is contained in:
Sam Lantinga 2018-06-05 12:46:13 -07:00
parent 2dedbc7262
commit 113801b790
5 changed files with 27 additions and 1 deletions

View File

@ -695,6 +695,13 @@ public class SDLActivity extends Activity {
return (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION); return (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION);
} }
/**
* This method is called by SDL using JNI.
*/
public static boolean isChromebook() {
return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
}
/** /**
* This method is called by SDL using JNI. * This method is called by SDL using JNI.
*/ */

View File

@ -125,6 +125,11 @@ extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
/**
\brief Return true if the application is running on a Chromebook
*/
extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
/** /**
See the official Android developer guide for more information: See the official Android developer guide for more information:
http://developer.android.com/guide/topics/data/data-storage.html http://developer.android.com/guide/topics/data/data-storage.html

View File

@ -213,6 +213,7 @@ static jmethodID midSetWindowStyle;
static jmethodID midSetOrientation; static jmethodID midSetOrientation;
static jmethodID midGetContext; static jmethodID midGetContext;
static jmethodID midIsAndroidTV; static jmethodID midIsAndroidTV;
static jmethodID midIsChromebook;
static jmethodID midInputGetInputDeviceIds; static jmethodID midInputGetInputDeviceIds;
static jmethodID midSendMessage; static jmethodID midSendMessage;
static jmethodID midShowTextInput; static jmethodID midShowTextInput;
@ -316,6 +317,8 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv* mEnv, jclass c
"getContext","()Landroid/content/Context;"); "getContext","()Landroid/content/Context;");
midIsAndroidTV = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, midIsAndroidTV = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
"isAndroidTV","()Z"); "isAndroidTV","()Z");
midIsChromebook = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
"isChromebook", "()Z");
midInputGetInputDeviceIds = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, midInputGetInputDeviceIds = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
"inputGetInputDeviceIds", "(I)[I"); "inputGetInputDeviceIds", "(I)[I");
midSendMessage = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, midSendMessage = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
@ -349,7 +352,8 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv* mEnv, jclass c
!midSendMessage || !midShowTextInput || !midIsScreenKeyboardShown || !midSendMessage || !midShowTextInput || !midIsScreenKeyboardShown ||
!midClipboardSetText || !midClipboardGetText || !midClipboardHasText || !midClipboardSetText || !midClipboardGetText || !midClipboardHasText ||
!midOpenAPKExpansionInputStream || !midGetManifestEnvironmentVariables || !midGetDisplayDPI || !midOpenAPKExpansionInputStream || !midGetManifestEnvironmentVariables || !midGetDisplayDPI ||
!midCreateCustomCursor || !midSetCustomCursor || !midSetSystemCursor || !midSupportsRelativeMouse || !midSetRelativeMouseEnabled) { !midCreateCustomCursor || !midSetCustomCursor || !midSetSystemCursor || !midSupportsRelativeMouse || !midSetRelativeMouseEnabled ||
!midIsChromebook) {
__android_log_print(ANDROID_LOG_WARN, "SDL", "Missing some Java callbacks, do you have the latest version of SDLActivity.java?"); __android_log_print(ANDROID_LOG_WARN, "SDL", "Missing some Java callbacks, do you have the latest version of SDLActivity.java?");
} }
@ -2024,6 +2028,12 @@ SDL_bool SDL_IsAndroidTV(void)
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsAndroidTV); return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsAndroidTV);
} }
SDL_bool SDL_IsChromebook(void)
{
JNIEnv *env = Android_JNI_GetEnv();
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsChromebook);
}
const char * SDL_AndroidGetInternalStoragePath(void) const char * SDL_AndroidGetInternalStoragePath(void)
{ {
static char *s_AndroidInternalFilesPath = NULL; static char *s_AndroidInternalFilesPath = NULL;

View File

@ -672,3 +672,4 @@
#define SDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex_REAL #define SDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex_REAL
#define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL #define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL
#define SDL_HasAVX512F SDL_HasAVX512F_REAL #define SDL_HasAVX512F SDL_HasAVX512F_REAL
#define SDL_IsChromebook SDL_IsChromebook_REAL

View File

@ -712,3 +712,6 @@ SDL_DYNAPI_PROC(char*,SDL_GameControllerMappingForDeviceIndex,(int a),(a),return
SDL_DYNAPI_PROC(int,SDL_LinuxSetThreadPriority,(Sint64 a, int b),(a,b),return) SDL_DYNAPI_PROC(int,SDL_LinuxSetThreadPriority,(Sint64 a, int b),(a,b),return)
#endif #endif
SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX512F,(void),(),return) SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX512F,(void),(),return)
#ifdef __ANDROID__
SDL_DYNAPI_PROC(SDL_bool,SDL_IsChromebook,(void),(),return)
#endif