|
|
@@ -60,6 +60,7 @@ public class GameActivity extends SDLActivity {
|
|
|
private static boolean immersiveActive = false;
|
|
|
private static boolean mustCacheArchive = false;
|
|
|
private boolean storagePermissionUnnecessary = false;
|
|
|
+ private boolean shortEdgesMode = false;
|
|
|
public boolean embed = false;
|
|
|
public int safeAreaTop = 0;
|
|
|
public int safeAreaLeft = 0;
|
|
|
@@ -117,7 +118,8 @@ public class GameActivity extends SDLActivity {
|
|
|
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
|
|
|
|
|
if (android.os.Build.VERSION.SDK_INT >= 28) {
|
|
|
- getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
|
|
+ getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
|
|
|
+ shortEdgesMode = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -263,68 +265,18 @@ public class GameActivity extends SDLActivity {
|
|
|
@Override
|
|
|
public void onResume() {
|
|
|
super.onResume();
|
|
|
-
|
|
|
- if (immersiveActive) {
|
|
|
- int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
|
|
|
-
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= 16) {
|
|
|
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
|
|
- View.SYSTEM_UI_FLAG_FULLSCREEN;
|
|
|
- }
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= 19) {
|
|
|
- flags |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
|
|
|
- }
|
|
|
-
|
|
|
- getWindow().getDecorView().setSystemUiVisibility(flags);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
@Keep
|
|
|
public void setImmersiveMode(boolean immersive_mode) {
|
|
|
- if (android.os.Build.VERSION.SDK_INT < 11) {
|
|
|
- // The API getWindow().getDecorView().setSystemUiVisibility() was
|
|
|
- // added in Android 11 (a.k.a. Honeycomb, a.k.a. 3.0.x). If we run
|
|
|
- // on this we do nothing.
|
|
|
- return;
|
|
|
+ if (android.os.Build.VERSION.SDK_INT >= 28) {
|
|
|
+ getWindow().getAttributes().layoutInDisplayCutoutMode = immersive_mode ?
|
|
|
+ WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES :
|
|
|
+ WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
|
|
|
+ shortEdgesMode = immersive_mode;
|
|
|
}
|
|
|
|
|
|
immersiveActive = immersive_mode;
|
|
|
-
|
|
|
- final Object lock = new Object();
|
|
|
- final boolean immersive_enabled = immersive_mode;
|
|
|
- synchronized (lock) {
|
|
|
- runOnUiThread(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- synchronized (lock) {
|
|
|
- if (immersive_enabled) {
|
|
|
- int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
|
|
|
-
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= 16) {
|
|
|
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
|
|
- View.SYSTEM_UI_FLAG_FULLSCREEN;
|
|
|
- }
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= 19) {
|
|
|
- flags |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
|
|
|
- }
|
|
|
- getWindow().getDecorView().setSystemUiVisibility(flags);
|
|
|
- } else if (android.os.Build.VERSION.SDK_INT >= 16) {
|
|
|
- getWindow().getDecorView().setSystemUiVisibility(
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- lock.notify();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- ;
|
|
|
}
|
|
|
|
|
|
@Keep
|
|
|
@@ -563,7 +515,7 @@ public class GameActivity extends SDLActivity {
|
|
|
|
|
|
@Keep
|
|
|
public boolean initializeSafeArea() {
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= 28) {
|
|
|
+ if (android.os.Build.VERSION.SDK_INT >= 28 && shortEdgesMode) {
|
|
|
DisplayCutout cutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
|
|
|
|
|
|
if (cutout != null) {
|