Implement love.window.getSafeArea for Android

--HG--
branch : android-safearea
This commit is contained in:
Miku AuahDark
2019-02-08 23:58:02 +08:00
parent 76917685dd
commit 4a08c0f7c1
3 changed files with 44 additions and 1 deletions
+22
View File
@@ -90,6 +90,28 @@ double getScreenScale()
return result;
}
bool getSafeArea(int &top, int &left, int &bottom, int &right)
{
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
jobject activity = (jobject) SDL_AndroidGetActivity();
jclass clazz(env->GetObjectClass(activity));
jmethodID methodID = env->GetMethodID(clazz, "initializeSafeArea", "()Z");
bool hasSafeArea = false;
if ((hasSafeArea = env->CallBooleanMethod(activity, methodID)))
{
top = env->GetIntField(activity, env->GetFieldID(clazz, "safeAreaTop", "I"));
left = env->GetIntField(activity, env->GetFieldID(clazz, "safeAreaLeft", "I"));
bottom = env->GetIntField(activity, env->GetFieldID(clazz, "safeAreaBottom", "I"));
right = env->GetIntField(activity, env->GetFieldID(clazz, "safeAreaRight", "I"));
}
env->DeleteLocalRef(clazz);
env->DeleteLocalRef(activity);
return hasSafeArea;
}
const char *getSelectedGameFile()
{
static const char *path = NULL;