|
@@ -33,7 +33,7 @@ import android.content.pm.ApplicationInfo;
|
|
|
/**
|
|
|
SDL Activity
|
|
|
*/
|
|
|
-public class SDLActivity extends Activity {
|
|
|
+public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
|
|
private static final String TAG = "SDL";
|
|
|
|
|
|
public static boolean mIsResumedCalled, mIsSurfaceReady, mHasFocus;
|
|
@@ -251,6 +251,8 @@ public class SDLActivity extends Activity {
|
|
|
|
|
|
setWindowStyle(false);
|
|
|
|
|
|
+ getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
|
|
|
+
|
|
|
// Get filename from "Open with" of another application
|
|
|
Intent intent = getIntent();
|
|
|
if (intent != null && intent.getData() != null) {
|
|
@@ -489,12 +491,14 @@ public class SDLActivity extends Activity {
|
|
|
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
|
|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
|
|
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
|
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
|
|
|
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
|
|
|
window.getDecorView().setSystemUiVisibility(flags);
|
|
|
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
|
+ window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
|
|
|
} else {
|
|
|
- int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
|
|
|
- window.getDecorView().setSystemUiVisibility(flags);
|
|
|
+ int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE;
|
|
|
+ window.getDecorView().setSystemUiVisibility(flags);
|
|
|
+ window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
|
|
|
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
|
}
|
|
|
}
|
|
@@ -1110,6 +1114,32 @@ public class SDLActivity extends Activity {
|
|
|
return dialog;
|
|
|
}
|
|
|
|
|
|
+ private final Runnable rehideSystemUi = new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
|
|
|
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
|
|
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
|
|
+ View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
|
|
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
|
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
|
|
|
+
|
|
|
+ SDLActivity.this.getWindow().getDecorView().setSystemUiVisibility(flags);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ public void onSystemUiVisibilityChange(int visibility) {
|
|
|
+ if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0 || (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
|
|
|
+
|
|
|
+ Handler handler = getWindow().getDecorView().getHandler();
|
|
|
+ if (handler != null) {
|
|
|
+ handler.removeCallbacks(rehideSystemUi); // Prevent a hide loop.
|
|
|
+ handler.postDelayed(rehideSystemUi, 2000);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* This method is called by SDL using JNI.
|
|
|
*/
|