From 2de0910bbdfd5f45e15f077fa1bd4b487621d189 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sat, 23 Aug 2025 12:36:16 +0200 Subject: [PATCH] Android fixes --- .../data/android/main/AndroidManifest.xml | 1 + .../android_java/org/armory3d/IronActivity.kt | 56 +++++++++++++------ 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/base/sources/backends/data/android/main/AndroidManifest.xml b/base/sources/backends/data/android/main/AndroidManifest.xml index 1d3f0ccf..54f37f73 100644 --- a/base/sources/backends/data/android/main/AndroidManifest.xml +++ b/base/sources/backends/data/android/main/AndroidManifest.xml @@ -20,5 +20,6 @@ + diff --git a/base/sources/backends/data/android_java/org/armory3d/IronActivity.kt b/base/sources/backends/data/android_java/org/armory3d/IronActivity.kt index 8d87416f..24112d96 100644 --- a/base/sources/backends/data/android_java/org/armory3d/IronActivity.kt +++ b/base/sources/backends/data/android_java/org/armory3d/IronActivity.kt @@ -1,5 +1,6 @@ package org.armory3d +import android.app.Activity import android.app.NativeActivity import android.content.Context import android.content.Intent @@ -33,6 +34,18 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import kotlin.math.log +import android.app.AlertDialog + +class ErrorActivity: Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + AlertDialog.Builder(this) + .setTitle("Error") + .setMessage("This device does not support Vulkan 1.3. :(") + .setCancelable(false) + .show() + } +} class IronActivity: NativeActivity(), KeyEvent.Callback { companion object { @@ -132,6 +145,13 @@ class IronActivity: NativeActivity(), KeyEvent.Callback { override fun onCreate(state: Bundle?) { super.onCreate(state) + + if (!packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION, 0x00403000)) { // 1.3 + startActivity(Intent(this, ErrorActivity::class.java)) + finish() + return + } + hideSystemUI() instance = this inputManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager @@ -159,26 +179,26 @@ class IronActivity: NativeActivity(), KeyEvent.Callback { ); } - private fun hideSystemUI() { - window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY - } + private fun hideSystemUI() { + window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + } - private fun delayedHideSystemUI() { - hideSystemUIHandler.removeMessages(0) - if (!isDisabledStickyImmersiveMode) { - hideSystemUIHandler.sendEmptyMessageDelayed(0, 300) - } - } + private fun delayedHideSystemUI() { + hideSystemUIHandler.removeMessages(0) + if (!isDisabledStickyImmersiveMode) { + hideSystemUIHandler.sendEmptyMessageDelayed(0, 300) + } + } - override fun onWindowFocusChanged(hasFocus: Boolean) { - super.onWindowFocusChanged(hasFocus) - if (hasFocus) { - delayedHideSystemUI() - } - else { - hideSystemUIHandler.removeMessages(0) - } - } + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) { + delayedHideSystemUI() + } + else { + hideSystemUIHandler.removeMessages(0) + } + } override fun onKeyMultiple(keyCode: Int, count: Int, event: KeyEvent): Boolean { this.nativeIronKeyPress(event.characters)