@@ -346,6 +346,7 @@ static jmethodID midClipboardSetText;
346
346
static jmethodID midCreateCustomCursor ;
347
347
static jmethodID midDestroyCustomCursor ;
348
348
static jmethodID midGetContext ;
349
+ static jmethodID midGetDeviceFormFactor ;
349
350
static jmethodID midGetManifestEnvironmentVariables ;
350
351
static jmethodID midGetNativeSurface ;
351
352
static jmethodID midInitTouch ;
@@ -635,6 +636,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv *env, jclass cl
635
636
midCreateCustomCursor = (* env )-> GetStaticMethodID (env , mActivityClass , "createCustomCursor" , "([IIIII)I" );
636
637
midDestroyCustomCursor = (* env )-> GetStaticMethodID (env , mActivityClass , "destroyCustomCursor" , "(I)V" );
637
638
midGetContext = (* env )-> GetStaticMethodID (env , mActivityClass , "getContext" , "()Landroid/content/Context;" );
639
+ midGetDeviceFormFactor = (* env )-> GetStaticMethodID (env , mActivityClass , "getDeviceFormFactor" , "()Ljava/lang/String;" );
638
640
midGetManifestEnvironmentVariables = (* env )-> GetStaticMethodID (env , mActivityClass , "getManifestEnvironmentVariables" , "()Z" );
639
641
midGetNativeSurface = (* env )-> GetStaticMethodID (env , mActivityClass , "getNativeSurface" , "()Landroid/view/Surface;" );
640
642
midInitTouch = (* env )-> GetStaticMethodID (env , mActivityClass , "initTouch" , "()V" );
@@ -667,6 +669,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv *env, jclass cl
667
669
!midCreateCustomCursor ||
668
670
!midDestroyCustomCursor ||
669
671
!midGetContext ||
672
+ !midGetDeviceFormFactor ||
670
673
!midGetManifestEnvironmentVariables ||
671
674
!midGetNativeSurface ||
672
675
!midInitTouch ||
@@ -2821,4 +2824,37 @@ bool Android_JNI_OpenFileDialog(
2821
2824
return true;
2822
2825
}
2823
2826
2827
+ SDL_FormFactor SDL_GetAndroidDeviceFormFactor (void )
2828
+ {
2829
+ JNIEnv * env = Android_JNI_GetEnv ();
2830
+ SDL_FormFactor form_factor = SDL_FORMFACTOR_UNKNOWN ;
2831
+ jstring string ;
2832
+
2833
+ string = (* env )-> CallStaticObjectMethod (env , mActivityClass , midGetDeviceFormFactor );
2834
+ if (string ) {
2835
+ const char * utf = (* env )-> GetStringUTFChars (env , string , 0 );
2836
+ if (utf ) {
2837
+ if (SDL_strcmp (utf , "tv" ) == 0 ) {
2838
+ form_factor = SDL_FORMFACTOR_TV ;
2839
+ } else if (SDL_strcmp (utf , "tablet" ) == 0 ) {
2840
+ form_factor = SDL_FORMFACTOR_TABLET ;
2841
+ } else if (SDL_strcmp (utf , "phone" ) == 0 ) {
2842
+ form_factor = SDL_FORMFACTOR_PHONE ;
2843
+ } else if (SDL_strcmp (utf , "car" ) == 0 ) {
2844
+ form_factor = SDL_FORMFACTOR_CAR ;
2845
+ } else if (SDL_strcmp (utf , "vr" ) == 0 ) {
2846
+ form_factor = SDL_FORMFACTOR_VR ;
2847
+ } else if (SDL_strcmp (utf , "watch" ) == 0 ) {
2848
+ form_factor = SDL_FORMFACTOR_WATCH ;
2849
+ } else {
2850
+ form_factor = SDL_FORMFACTOR_UNKNOWN ;
2851
+ }
2852
+ (* env )-> ReleaseStringUTFChars (env , string , utf );
2853
+ }
2854
+ (* env )-> DeleteLocalRef (env , string );
2855
+ }
2856
+
2857
+ return form_factor ;
2858
+ }
2859
+
2824
2860
#endif // SDL_PLATFORM_ANDROID
0 commit comments