Android fixes

This commit is contained in:
luboslenco
2025-08-23 12:36:16 +02:00
parent a85f0131b1
commit 2de0910bbd
2 changed files with 39 additions and 18 deletions
@@ -20,5 +20,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.armory3d.ErrorActivity" />
</application>
</manifest>
@@ -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)