浏览代码

Android: retrieve actual screen size

LouYihua 7 年之前
父节点
当前提交
9cd9b86d04

+ 9 - 2
android/app/src/main/cpp/android_jni.cpp

@@ -157,8 +157,15 @@ UTIL_GetScreenSize(
    DWORD *pdwScreenHeight
 )
 {
-    *pdwScreenWidth  = 640;
-    *pdwScreenHeight = 400;
+    JNIEnv* env = getJNIEnv();
+    jclass clazz = env->FindClass("io/github/sdlpal/PalActivity");
+    *pdwScreenWidth = env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "screenWidth", "I"));
+    *pdwScreenHeight = env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "screenHeight", "I"));
+    if (*pdwScreenWidth == 0 || *pdwScreenHeight == 0)
+    {
+        *pdwScreenWidth  = 640;
+        *pdwScreenHeight = 400;
+    }
     return TRUE;
 }
 

+ 5 - 0
android/app/src/main/java/io/github/sdlpal/PalActivity.java

@@ -11,6 +11,7 @@ import java.util.*;
 public class PalActivity extends SDLActivity {
     private static final String TAG = "sdlpal-debug";
     private static MediaPlayer mediaPlayer;
+    private static int screenWidth, screenHeight;
 
     private static MediaPlayer JNI_mediaplayer_load(String filename){
         Log.v(TAG, "loading midi:" + filename);
@@ -40,6 +41,10 @@ public class PalActivity extends SDLActivity {
             setExternalStorage(Environment.getExternalStorageDirectory().getPath());
             Log.v(TAG, "sdcard path " + Environment.getExternalStorageDirectory().getPath());
         }
+        DisplayMetrics metrics = new DisplayMetrics();
+        getWindowManager().getDefaultDisplay().getMetrics(metrics);
+        screenWidth = metrics.widthPixels;
+        screenHeight = metrics.heightPixels;
     }
 
     @Override