mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-31 07:25:22 +01:00 
			
		
		
		
	Migrate the Android port to SDL2
This commit is contained in:
		| @@ -20,7 +20,8 @@ with this program; if not, write to the Free Software Foundation, Inc., | ||||
|  | ||||
| package net.minetest.minetest; | ||||
|  | ||||
| import android.app.NativeActivity; | ||||
| import org.libsdl.app.SDLActivity; | ||||
|  | ||||
| import android.content.Intent; | ||||
| import android.net.Uri; | ||||
| import android.os.Bundle; | ||||
| @@ -32,6 +33,7 @@ import android.view.WindowManager; | ||||
| import android.view.inputmethod.InputMethodManager; | ||||
| import android.widget.Button; | ||||
| import android.widget.LinearLayout; | ||||
| import android.content.res.Configuration; | ||||
|  | ||||
| import androidx.annotation.Keep; | ||||
| import androidx.appcompat.app.AlertDialog; | ||||
| @@ -45,12 +47,29 @@ import java.util.Objects; | ||||
| // This annotation prevents the minifier/Proguard from mangling them. | ||||
| @Keep | ||||
| @SuppressWarnings("unused") | ||||
| public class GameActivity extends NativeActivity { | ||||
| 	static { | ||||
| 		System.loadLibrary("c++_shared"); | ||||
| 		System.loadLibrary("minetest"); | ||||
| public class GameActivity extends SDLActivity { | ||||
| 	@Override | ||||
| 	protected String getMainSharedObject() { | ||||
| 		return getContext().getApplicationInfo().nativeLibraryDir + "/libminetest.so"; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	protected String getMainFunction() { | ||||
| 		return "SDL_Main"; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	protected String[] getLibraries() { | ||||
| 		return new String[] { | ||||
| 			"minetest" | ||||
| 		}; | ||||
| 	} | ||||
|  | ||||
| 	// Prevent SDL from changing orientation settings since we already set the | ||||
| 	// correct orientation in our AndroidManifest.xml | ||||
| 	@Override | ||||
| 	public void setOrientationBis(int w, int h, boolean resizable, String hint) {} | ||||
|  | ||||
| 	enum DialogType { TEXT_INPUT, SELECTION_INPUT } | ||||
| 	enum DialogState { DIALOG_SHOWN, DIALOG_INPUTTED, DIALOG_CANCELED } | ||||
|  | ||||
| @@ -59,32 +78,6 @@ public class GameActivity extends NativeActivity { | ||||
| 	private String messageReturnValue = ""; | ||||
| 	private int selectionReturnValue = 0; | ||||
|  | ||||
| 	@Override | ||||
| 	public void onCreate(Bundle savedInstanceState) { | ||||
| 		super.onCreate(savedInstanceState); | ||||
| 		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); | ||||
| 	} | ||||
|  | ||||
| 	private void makeFullScreen() { | ||||
| 		this.getWindow().getDecorView().setSystemUiVisibility( | ||||
| 				View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | | ||||
| 				View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | | ||||
| 				View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public void onWindowFocusChanged(boolean hasFocus) { | ||||
| 		super.onWindowFocusChanged(hasFocus); | ||||
| 		if (hasFocus) | ||||
| 			makeFullScreen(); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	protected void onResume() { | ||||
| 		super.onResume(); | ||||
| 		makeFullScreen(); | ||||
| 	} | ||||
|  | ||||
| 	private native void saveSettings(); | ||||
|  | ||||
| 	@Override | ||||
| @@ -96,11 +89,6 @@ public class GameActivity extends NativeActivity { | ||||
| 		saveSettings(); | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public void onBackPressed() { | ||||
| 		// Ignore the back press so Minetest can handle it | ||||
| 	} | ||||
|  | ||||
| 	public void showTextInputDialog(String hint, String current, int editType) { | ||||
| 		runOnUiThread(() -> showTextInputDialogUI(hint, current, editType)); | ||||
| 	} | ||||
| @@ -265,4 +253,8 @@ public class GameActivity extends NativeActivity { | ||||
|  | ||||
| 		return langCode; | ||||
| 	} | ||||
|  | ||||
| 	public boolean hasPhysicalKeyboard() { | ||||
| 		return getContext().getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS; | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1345,7 +1345,12 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if ((source & InputDevice.SOURCE_MOUSE) == InputDevice.SOURCE_MOUSE) { | ||||
|         if ((source & InputDevice.SOURCE_MOUSE) == InputDevice.SOURCE_MOUSE || | ||||
|                 /* | ||||
|                  * CUSTOM ADDITION FOR MINETEST | ||||
|                  * should be upstreamed | ||||
|                  */ | ||||
|                 (source & InputDevice.SOURCE_MOUSE_RELATIVE) == InputDevice.SOURCE_MOUSE_RELATIVE) { | ||||
|             // on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses | ||||
|             // they are ignored here because sending them as mouse input to SDL is messy | ||||
|             if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user