aboutsummaryrefslogtreecommitdiff
path: root/build/android/src/main/java/net.minetest.minetest
diff options
context:
space:
mode:
authorMaksim <MoNTE48@mail.ua>2020-04-15 16:27:40 +0200
committerGitHub <noreply@github.com>2020-04-15 16:27:40 +0200
commit62ae7adab2bebde04864c12543caefbffab24963 (patch)
tree1cad2b08c94c2de26a39124f3b3dd0d513cbcc99 /build/android/src/main/java/net.minetest.minetest
parent8ae8c1600a66c724565ce7a70e0e5f542f12e38e (diff)
downloadminetest-62ae7adab2bebde04864c12543caefbffab24963.tar.gz
minetest-62ae7adab2bebde04864c12543caefbffab24963.tar.bz2
minetest-62ae7adab2bebde04864c12543caefbffab24963.zip
Android: add Android Studio support, completely redone java part (#9066)
Diffstat (limited to 'build/android/src/main/java/net.minetest.minetest')
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MainActivity.java77
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java371
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java87
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java108
4 files changed, 0 insertions, 643 deletions
diff --git a/build/android/src/main/java/net.minetest.minetest/MainActivity.java b/build/android/src/main/java/net.minetest.minetest/MainActivity.java
deleted file mode 100644
index 71b0ce144..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MainActivity.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package net.minetest.minetest;
-
-import android.Manifest;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.os.Bundle;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class MainActivity extends Activity {
- private final static int PERMISSIONS = 1;
- private static final String[] REQUIRED_SDK_PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- checkPermission();
- } else {
- next();
- }
- }
-
- private void checkPermission() {
- final List<String> missingPermissions = new ArrayList<>();
- // check required permission
- for (final String permission : REQUIRED_SDK_PERMISSIONS) {
- final int result = ContextCompat.checkSelfPermission(this, permission);
- if (result != PackageManager.PERMISSION_GRANTED) {
- missingPermissions.add(permission);
- }
- }
- if (!missingPermissions.isEmpty()) {
- // request permission
- final String[] permissions = missingPermissions
- .toArray(new String[0]);
- ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
- } else {
- final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
- Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
- onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS,
- grantResults);
- }
- }
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
- @NonNull int[] grantResults) {
- if (requestCode == PERMISSIONS) {
- for (int index = 0; index < permissions.length; index++) {
- if (grantResults[index] != PackageManager.PERMISSION_GRANTED) {
- // permission not granted - toast and exit
- Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show();
- finish();
- return;
- }
- }
- // permission were granted - run
- next();
- }
- }
-
- private void next() {
- Intent intent = new Intent(this, MtNativeActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- startActivity(intent);
- }
-}
diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
deleted file mode 100644
index 84cfca796..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
+++ /dev/null
@@ -1,371 +0,0 @@
-package net.minetest.minetest;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.res.AssetFileDescriptor;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Environment;
-import android.util.Log;
-import android.view.Display;
-import android.view.View;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.Vector;
-
-public class MinetestAssetCopy extends Activity {
- private ProgressBar m_ProgressBar;
- private TextView m_Filename;
- private copyAssetTask m_AssetCopy;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.assetcopy);
- m_ProgressBar = findViewById(R.id.progressBar1);
- m_Filename = findViewById(R.id.textView1);
- Display display = getWindowManager().getDefaultDisplay();
- m_ProgressBar.getLayoutParams().width = (int) (display.getWidth() * 0.8);
- m_ProgressBar.invalidate();
-
- /* check if there's already a copy in progress and reuse in case it is*/
- MinetestAssetCopy prevActivity =
- (MinetestAssetCopy) getLastNonConfigurationInstance();
- if (prevActivity != null) {
- m_AssetCopy = prevActivity.m_AssetCopy;
- } else {
- m_AssetCopy = new copyAssetTask();
- m_AssetCopy.execute();
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- makeFullScreen();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- if (m_AssetCopy != null) {
- m_AssetCopy.cancel(true);
- }
- }
-
- private void makeFullScreen() {
- if (Build.VERSION.SDK_INT >= 19)
- 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();
- }
-
- /* preserve asset copy background task to prevent restart of copying */
- /* this way of doing it is not recommended for latest android version */
- /* but the recommended way isn't available on android 2.x */
- public Object onRetainNonConfigurationInstance() {
- return this;
- }
-
- @SuppressLint("StaticFieldLeak")
- private class copyAssetTask extends AsyncTask<String, Integer, String> {
- boolean m_copy_started = false;
- String m_Foldername = "media";
- Vector<String> m_foldernames;
- Vector<String> m_filenames;
- Vector<String> m_tocopy;
- Vector<String> m_asset_size_unknown;
-
- private long getFullSize(String filename) {
- long size = 0;
- try {
- InputStream src = getAssets().open(filename);
- byte[] buf = new byte[4096];
-
- int len;
- while ((len = src.read(buf)) > 0) {
- size += len;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return size;
- }
-
- @Override
- protected String doInBackground(String... files) {
- m_foldernames = new Vector<>();
- m_filenames = new Vector<>();
- m_tocopy = new Vector<>();
- m_asset_size_unknown = new Vector<>();
- String baseDir =
- Environment.getExternalStorageDirectory().getAbsolutePath()
- + "/";
-
-
- // prepare temp folder
- File TempFolder = new File(baseDir + "Minetest/tmp/");
-
- if (!TempFolder.exists()) {
- TempFolder.mkdir();
- } else {
- File[] todel = TempFolder.listFiles();
-
- for (File file : todel) {
- Log.v("MinetestAssetCopy", "deleting: " + file.getAbsolutePath());
- file.delete();
- }
- }
-
- // add a .nomedia file
- try {
- OutputStream dst = new FileOutputStream(baseDir + "Minetest/.nomedia");
- dst.close();
- } catch (IOException e) {
- Log.e("MinetestAssetCopy", "Failed to create .nomedia file");
- e.printStackTrace();
- }
-
-
- // build lists from prepared data
- BuildFolderList();
- BuildFileList();
-
- // scan filelist
- ProcessFileList();
-
- // doing work
- m_copy_started = true;
- m_ProgressBar.setMax(m_tocopy.size());
-
- for (int i = 0; i < m_tocopy.size(); i++) {
- try {
- String filename = m_tocopy.get(i);
- publishProgress(i);
-
- boolean asset_size_unknown = false;
- long filesize = -1;
-
- if (m_asset_size_unknown.contains(filename)) {
- File testme = new File(baseDir + "/" + filename);
-
- if (testme.exists())
- filesize = testme.length();
-
- asset_size_unknown = true;
- }
-
- InputStream src;
- try {
- src = getAssets().open(filename);
- } catch (IOException e) {
- Log.e("MinetestAssetCopy", "Copying file: " + filename + " FAILED (not in assets)");
- e.printStackTrace();
- continue;
- }
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len = src.read(buf, 0, 1024);
-
- /* following handling is crazy but we need to deal with */
- /* compressed assets.Flash chips limited livetime due to */
- /* write operations, we can't allow large files to destroy */
- /* users flash. */
- if (asset_size_unknown) {
- if ((len > 0) && (len < buf.length) && (len == filesize)) {
- src.close();
- continue;
- }
-
- if (len == buf.length) {
- src.close();
- long size = getFullSize(filename);
- if (size == filesize) {
- continue;
- }
- src = getAssets().open(filename);
- len = src.read(buf, 0, 1024);
- }
- }
- if (len > 0) {
- int total_filesize = 0;
- OutputStream dst;
- try {
- dst = new FileOutputStream(baseDir + "/" + filename);
- } catch (IOException e) {
- Log.e("MinetestAssetCopy", "Copying file: " + baseDir +
- "/" + filename + " FAILED (couldn't open output file)");
- e.printStackTrace();
- src.close();
- continue;
- }
- dst.write(buf, 0, len);
- total_filesize += len;
-
- while ((len = src.read(buf)) > 0) {
- dst.write(buf, 0, len);
- total_filesize += len;
- }
-
- dst.close();
- Log.v("MinetestAssetCopy", "Copied file: " +
- m_tocopy.get(i) + " (" + total_filesize +
- " bytes)");
- } else if (len < 0) {
- Log.e("MinetestAssetCopy", "Copying file: " +
- m_tocopy.get(i) + " failed, size < 0");
- }
- src.close();
- } catch (IOException e) {
- Log.e("MinetestAssetCopy", "Copying file: " +
- m_tocopy.get(i) + " failed");
- e.printStackTrace();
- }
- }
- return "";
- }
-
- /**
- * update progress bar
- */
- protected void onProgressUpdate(Integer... progress) {
-
- if (m_copy_started) {
- String todisplay = m_tocopy.get(progress[0]);
- m_ProgressBar.setProgress(progress[0]);
- m_Filename.setText(todisplay);
- } else {
- String todisplay = m_Foldername;
- String full_text = "scanning " + todisplay + " ...";
- m_Filename.setText(full_text);
- }
- }
-
- /**
- * check all files and folders in filelist
- */
- void ProcessFileList() {
- String FlashBaseDir =
- Environment.getExternalStorageDirectory().getAbsolutePath();
-
- for (String current_path : m_filenames) {
- String FlashPath = FlashBaseDir + "/" + current_path;
-
- if (isAssetFolder(current_path)) {
- /* store information and update gui */
- m_Foldername = current_path;
- publishProgress(0);
-
- /* open file in order to check if it's a folder */
- File current_folder = new File(FlashPath);
- if (!current_folder.exists()) {
- if (!current_folder.mkdirs()) {
- Log.e("MinetestAssetCopy", "\t failed create folder: " +
- FlashPath);
- } else {
- Log.v("MinetestAssetCopy", "\t created folder: " +
- FlashPath);
- }
- }
-
- continue;
- }
-
- /* if it's not a folder it's most likely a file */
- boolean refresh = true;
-
- File testme = new File(FlashPath);
-
- long asset_filesize = -1;
- long stored_filesize;
-
- if (testme.exists()) {
- try {
- AssetFileDescriptor fd = getAssets().openFd(current_path);
- asset_filesize = fd.getLength();
- fd.close();
- } catch (IOException e) {
- m_asset_size_unknown.add(current_path);
- Log.e("MinetestAssetCopy", "Failed to open asset file \"" +
- FlashPath + "\" for size check");
- }
-
- stored_filesize = testme.length();
-
- if (asset_filesize == stored_filesize)
- refresh = false;
-
- }
-
- if (refresh)
- m_tocopy.add(current_path);
- }
- }
-
- /**
- * read list of folders prepared on package build
- */
- void BuildFolderList() {
- try {
- InputStream is = getAssets().open("index.txt");
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-
- String line = reader.readLine();
- while (line != null) {
- m_foldernames.add(line);
- line = reader.readLine();
- }
- is.close();
- } catch (IOException e1) {
- Log.e("MinetestAssetCopy", "Error on processing index.txt");
- e1.printStackTrace();
- }
- }
-
- /**
- * read list of asset files prepared on package build
- */
- void BuildFileList() {
- long entrycount = 0;
- try {
- InputStream is = getAssets().open("filelist.txt");
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-
- String line = reader.readLine();
- while (line != null) {
- m_filenames.add(line);
- line = reader.readLine();
- entrycount++;
- }
- is.close();
- } catch (IOException e1) {
- Log.e("MinetestAssetCopy", "Error on processing filelist.txt");
- e1.printStackTrace();
- }
- }
-
- protected void onPostExecute(String result) {
- finish();
- }
-
- boolean isAssetFolder(String path) {
- return m_foldernames.contains(path);
- }
- }
-}
diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
deleted file mode 100644
index cb7ba8d3b..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package net.minetest.minetest;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.InputType;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnKeyListener;
-import android.widget.EditText;
-
-public class MinetestTextEntry extends Activity {
- private final int MultiLineTextInput = 1;
- private final int SingleLineTextInput = 2;
- private final int SingleLinePasswordInput = 3;
- private AlertDialog mTextInputDialog;
- private EditText mTextInputWidget;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Bundle b = getIntent().getExtras();
- String acceptButton = b.getString("EnterButton");
- String hint = b.getString("hint");
- String current = b.getString("current");
- int editType = b.getInt("editType");
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- mTextInputWidget = new EditText(this);
- mTextInputWidget.setHint(hint);
- mTextInputWidget.setText(current);
- mTextInputWidget.setMinWidth(300);
- if (editType == SingleLinePasswordInput) {
- mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT |
- InputType.TYPE_TEXT_VARIATION_PASSWORD);
- } else {
- mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT);
- }
-
- builder.setView(mTextInputWidget);
-
- if (editType == MultiLineTextInput) {
- builder.setPositiveButton(acceptButton, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- pushResult(mTextInputWidget.getText().toString());
- }
- });
- }
-
- builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- cancelDialog();
- }
- });
-
- mTextInputWidget.setOnKeyListener(new OnKeyListener() {
- @Override
- public boolean onKey(View view, int KeyCode, KeyEvent event) {
- if (KeyCode == KeyEvent.KEYCODE_ENTER) {
-
- pushResult(mTextInputWidget.getText().toString());
- return true;
- }
- return false;
- }
- });
-
- mTextInputDialog = builder.create();
- mTextInputDialog.show();
- }
-
- private void pushResult(String text) {
- Intent resultData = new Intent();
- resultData.putExtra("text", text);
- setResult(Activity.RESULT_OK, resultData);
- mTextInputDialog.dismiss();
- finish();
- }
-
- private void cancelDialog() {
- setResult(Activity.RESULT_CANCELED);
- mTextInputDialog.dismiss();
- finish();
- }
-}
diff --git a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
deleted file mode 100644
index f49d078fe..000000000
--- a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package net.minetest.minetest;
-
-import android.app.NativeActivity;
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.view.View;
-import android.view.WindowManager;
-
-public class MtNativeActivity extends NativeActivity {
-
- static {
- System.loadLibrary("c++_shared");
- System.loadLibrary("openal");
- System.loadLibrary("ogg");
- System.loadLibrary("vorbis");
- System.loadLibrary("iconv");
- System.loadLibrary("minetest");
- }
-
- private int m_MessagReturnCode;
- private String m_MessageReturnValue;
-
- public static native void putMessageBoxResult(String text);
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- m_MessagReturnCode = -1;
- m_MessageReturnValue = "";
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- makeFullScreen();
- }
-
- private void makeFullScreen() {
- if (Build.VERSION.SDK_INT >= 19)
- 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();
- }
-
- public void copyAssets() {
- Intent intent = new Intent(this, MinetestAssetCopy.class);
- startActivity(intent);
- }
-
- public void showDialog(String acceptButton, String hint, String current,
- int editType) {
-
- Intent intent = new Intent(this, MinetestTextEntry.class);
- Bundle params = new Bundle();
- params.putString("acceptButton", acceptButton);
- params.putString("hint", hint);
- params.putString("current", current);
- params.putInt("editType", editType);
- intent.putExtras(params);
- startActivityForResult(intent, 101);
- m_MessageReturnValue = "";
- m_MessagReturnCode = -1;
- }
-
- /* ugly code to workaround putMessageBoxResult not beeing found */
- public int getDialogState() {
- return m_MessagReturnCode;
- }
-
- public String getDialogValue() {
- m_MessagReturnCode = -1;
- return m_MessageReturnValue;
- }
-
- public float getDensity() {
- return getResources().getDisplayMetrics().density;
- }
-
- public int getDisplayWidth() {
- return getResources().getDisplayMetrics().widthPixels;
- }
-
- public int getDisplayHeight() {
- return getResources().getDisplayMetrics().heightPixels;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data) {
- if (requestCode == 101) {
- if (resultCode == RESULT_OK) {
- String text = data.getStringExtra("text");
- m_MessagReturnCode = 0;
- m_MessageReturnValue = text;
- } else {
- m_MessagReturnCode = 1;
- }
- }
- }
-}