mirror of
https://github.com/love2d/love-android.git
synced 2026-08-21 13:09:40 +02:00
should fix the crash on startup
This commit is contained in:
@@ -32,18 +32,22 @@ namespace android
|
||||
|
||||
double getScreenScale()
|
||||
{
|
||||
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
|
||||
static double result = -1.;
|
||||
|
||||
if (result == -1.) {
|
||||
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
|
||||
jclass activity = env->FindClass("org/libsdl/app/SDLActivity");
|
||||
|
||||
jclass activity = (jclass) SDL_AndroidGetActivity();
|
||||
jmethodID getMetrics = env->GetStaticMethodID(activity, "getMetrics", "()Landroid/util/DisplayMetrics;");
|
||||
jobject metrics = env->CallStaticObjectMethod(activity, getMetrics);
|
||||
jclass metricsClass = env->GetObjectClass(metrics);
|
||||
|
||||
double result = env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
|
||||
result = env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
|
||||
|
||||
env->DeleteLocalRef (metricsClass);
|
||||
env->DeleteLocalRef (metrics);
|
||||
env->DeleteLocalRef (activity);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.view.inputmethod.InputConnection;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AbsoluteLayout;
|
||||
import android.os.*;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.graphics.*;
|
||||
import android.media.*;
|
||||
@@ -53,6 +54,11 @@ public class SDLActivity extends Activity {
|
||||
System.loadLibrary("love");
|
||||
}
|
||||
|
||||
private static DisplayMetrics metrics = new DisplayMetrics();
|
||||
public static DisplayMetrics getMetrics() {
|
||||
return metrics;
|
||||
}
|
||||
|
||||
// Setup
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -79,6 +85,8 @@ public class SDLActivity extends Activity {
|
||||
mLayout.addView(mSurface);
|
||||
|
||||
setContentView(mLayout);
|
||||
|
||||
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
}
|
||||
|
||||
// Events
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
package org.love2d.android;
|
||||
|
||||
import org.libsdl.app.SDLActivity;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class GameActivity extends SDLActivity {
|
||||
|
||||
private static DisplayMetrics metrics = new DisplayMetrics();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
}
|
||||
|
||||
public static DisplayMetrics getMetrics() {
|
||||
return metrics;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user