diff --git a/android/app/build.gradle b/android/app/build.gradle index 0114ed2e..267d63ca 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,14 +31,14 @@ android { } } } - ndkVersion "26.0.10792818" - compileSdkVersion 33 + ndkVersion "28.2.12604990" + compileSdkVersion 36 defaultConfig { if (buildAsApplication) { applicationId "com.starship.android" } minSdkVersion 24 - targetSdkVersion 33 + targetSdkVersion 36 versionCode 6 versionName "1.0.1" externalNativeBuild { @@ -145,7 +145,7 @@ dependencies { } task wrapper(type: Wrapper) { - gradleVersion = '8.3.2' + gradleVersion = '8.9' } task prepareKotlinBuildScriptModel { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 700b212e..35a574f8 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -70,7 +70,7 @@ diff --git a/android/app/src/main/java/com/starship/android/MainActivity.java b/android/app/src/main/java/com/starship/android/MainActivity.java index 00b343c6..d1578144 100644 --- a/android/app/src/main/java/com/starship/android/MainActivity.java +++ b/android/app/src/main/java/com/starship/android/MainActivity.java @@ -30,7 +30,9 @@ import android.view.View; import android.widget.ImageView; import android.view.KeyEvent; import android.content.pm.ActivityInfo; -import android.view.KeyEvent; +import android.os.Build; +import android.view.WindowInsets; +import android.view.WindowInsetsController; public class MainActivity extends SDLActivity { static { @@ -183,6 +185,9 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // Enable immersive mode (edge-to-edge) + enableImmersiveMode(); + setupControllerOverlay(); attachController(); @@ -809,6 +814,35 @@ private void setupControllerOverlay() { setupToggleButton(buttonToggle, buttonGroup); } +private void enableImmersiveMode() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + // Android 11+ (API 30+) + WindowInsetsController controller = getWindow().getInsetsController(); + if (controller != null) { + controller.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); + controller.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); + } + } else { + // Android 10 and below + getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ); + } +} + +@Override +public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus) { + enableImmersiveMode(); + } +} + private void setupMenuButton(Button button) { button.setOnTouchListener(new View.OnTouchListener() { @Override diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 601c9891..63cf21d0 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,8 +1,12 @@ - + - -