From a97e9addf0f3a465c6a8b1db1aab38829b902a42 Mon Sep 17 00:00:00 2001 From: sigmabeta Date: Sun, 7 Jun 2015 23:11:34 -0400 Subject: [PATCH] Android: Show the in-game menu when back button is pushed. --- .../activities/EmulationActivity.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java index de7ebb17d3..7b0d4057f6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java @@ -25,6 +25,9 @@ public final class EmulationActivity extends Activity { private View mDecorView; + private boolean mDeviceHasTouchScreen; + private boolean mSystemUiVisible; + /** * Handlers are a way to pass a message to an Activity telling it to do something * on the UI thread. This Handler responds to any message, even blank ones, by @@ -44,6 +47,8 @@ public final class EmulationActivity extends Activity { super.onCreate(savedInstanceState); + mDeviceHasTouchScreen = getPackageManager().hasSystemFeature("android.hardware.touchscreen"); + // Get a handle to the Window containing the UI. mDecorView = getWindow().getDecorView(); @@ -59,9 +64,9 @@ public final class EmulationActivity extends Activity @Override public void onSystemUiVisibilityChange(int flags) { - boolean visible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; + mSystemUiVisible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; - if (visible) + if (mSystemUiVisible) { getActionBar().show(); hideSystemUiAfterDelay(); @@ -117,6 +122,20 @@ public final class EmulationActivity extends Activity } } + @Override + public void onBackPressed() + { + if (!mDeviceHasTouchScreen && !mSystemUiVisible) + { + showSystemUI(); + } + else + { + // Let the system handle it; i.e. quit the activity TODO or show "are you sure?" dialog. + super.onBackPressed(); + } + } + @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -275,6 +294,8 @@ public final class EmulationActivity extends Activity private void hideSystemUI() { + mSystemUiVisible = false; + mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | @@ -285,8 +306,12 @@ public final class EmulationActivity extends Activity private void showSystemUI() { + mSystemUiVisible = true; + mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + + hideSystemUiAfterDelay(); } }