From 9d64805ec14613c34abce32a855d3c07c5b966ec Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 3 Dec 2018 00:39:35 +0100 Subject: [PATCH] Update Android java code (#7820) Targets SDK 26 as required by the playstore. Fixes screen auto-rotation closing game. Hides on-screen navigation bar if present. Update gradlew. Fix display aspect on 18+/:9 displays (like a Samsung Galaxy S9). Remove small app icons, not required. Fix xml in unpacking activity. Support Android permission: On Android 6.0+ you need to manually give write permission (as required by google). Background during unpacking (just a demo for now). Material Design: no more Android 2 interface. Immersive mode (Android 4.4+ - hide NavBar for fullscreen mode). --- .gitignore | 3 + build/android/build.gradle | 91 ++- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 49896 -> 54731 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- build/android/gradlew | 110 +-- build/android/gradlew.bat | 14 +- build/android/src/debug/AndroidManifest.xml | 3 +- build/android/src/main/AndroidManifest.xml | 67 +- .../net.minetest.minetest/MainActivity.java | 79 ++ .../MinetestAssetCopy.java | 711 ++++++++---------- .../MinetestTextEntry.java | 50 +- .../MtNativeActivity.java | 69 +- .../src/main/res/drawable-hdpi/irr_icon.png | Bin 5490 -> 0 bytes .../src/main/res/drawable-ldpi/irr_icon.png | Bin 2262 -> 0 bytes .../src/main/res/drawable-mdpi/irr_icon.png | Bin 3110 -> 0 bytes .../src/main/res/drawable-xhdpi/irr_icon.png | Bin 7610 -> 0 bytes .../src/main/res/drawable/background.png | Bin 0 -> 83 bytes build/android/src/main/res/drawable/bg.xml | 4 + .../android/src/main/res/layout/assetcopy.xml | 40 +- .../src/main/res/mipmap/ic_launcher.png | Bin 0 -> 5780 bytes .../src/main/res/values-v21/styles.xml | 12 + build/android/src/main/res/values/strings.xml | 6 +- build/android/src/main/res/values/styles.xml | 13 +- 23 files changed, 723 insertions(+), 553 deletions(-) create mode 100644 build/android/src/main/java/net.minetest.minetest/MainActivity.java delete mode 100644 build/android/src/main/res/drawable-hdpi/irr_icon.png delete mode 100644 build/android/src/main/res/drawable-ldpi/irr_icon.png delete mode 100644 build/android/src/main/res/drawable-mdpi/irr_icon.png delete mode 100644 build/android/src/main/res/drawable-xhdpi/irr_icon.png create mode 100644 build/android/src/main/res/drawable/background.png create mode 100644 build/android/src/main/res/drawable/bg.xml create mode 100644 build/android/src/main/res/mipmap/ic_launcher.png create mode 100644 build/android/src/main/res/values-v21/styles.xml diff --git a/.gitignore b/.gitignore index 7b5ecab67..9489d6f3f 100644 --- a/.gitignore +++ b/.gitignore @@ -77,6 +77,7 @@ src/cmake_config_githash.h src/lua/build/ locale/ .directory +.gradle/ *.cbp *.layout *.o @@ -84,6 +85,8 @@ locale/ *.ninja .ninja* *.gch +*.iml +test_config.h cmake-build-debug/ cmake-build-release/ diff --git a/build/android/build.gradle b/build/android/build.gradle index 8d1899307..06c79a08f 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -1,25 +1,39 @@ buildscript { repositories { - mavenCentral() + maven { url 'https://maven.google.com' } + jcenter() } dependencies { - classpath "com.android.tools.build:gradle:2.3.0" + classpath 'com.android.tools.build:gradle:3.1.3' + } +} + +allprojects { + repositories { + maven { url 'https://maven.google.com' } + jcenter() } } apply plugin: "com.android.application" android { - compileSdkVersion 26 - buildToolsVersion "26.0.3" + compileSdkVersion 28 + buildToolsVersion "28.0.3" defaultConfig { versionCode 21 versionName "${System.env.VERSION_STR}.${versionCode}" minSdkVersion 14 - targetSdkVersion 14 + targetSdkVersion 28 applicationId "net.minetest.minetest" - manifestPlaceholders = [ package: "net.minetest.minetest", project: project.name ] + manifestPlaceholders = [package: "net.minetest.minetest", project: project.name] + ndk { + // Specifies the ABI configurations of your native + // libraries Gradle should build and package with your APK. + abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', + 'arm64-v8a' + } } lintOptions { @@ -46,3 +60,68 @@ android { } } } + +task cleanAssets(type: Delete) { + delete 'src/main/assets' +} + +task cleanIconv(type: Delete) { + delete 'deps/libiconv' +} + +task cleanIrrlicht(type: Delete) { + delete 'deps/irrlicht' +} + +task cleanLevelDB(type: Delete) { + delete 'deps/leveldb' +} + +task cleanCURL(type: Delete) { + delete 'deps/curl' + delete 'deps/curl-' + curl_version +} + +task cleanOpenSSL(type: Delete) { + delete 'deps/openssl' + delete 'deps/openssl-' + openssl_version + delete 'deps/openssl-' + openssl_version + '.tar.gz' +} + +task cleanOpenAL(type: Delete) { + delete 'deps/openal-soft' +} + +task cleanFreetype(type: Delete) { + delete 'deps/freetype2-android' +} + +task cleanOgg(type: Delete) { + delete 'deps/libvorbis-libogg-android' +} + +task cleanSQLite3(type: Delete) { + delete 'deps/sqlite-amalgamation-' + sqlite3_version + delete 'deps/sqlite-amalgamation-' + sqlite3_version + '.zip' +} + +task cleanGMP(type: Delete) { + delete 'deps/gmp' + delete 'deps/gmp-' + gmp_version +} + +task cleanAll(type: Delete, dependsOn: [clean, cleanAssets, cleanIconv, + cleanFreetype, cleanIrrlicht, cleanLevelDB, cleanSQLite3, cleanCURL, + cleanOpenSSL, cleanOpenAL, cleanOgg, cleanGMP]) { + delete 'deps' + delete 'gen' + delete 'libs' + delete 'obj' + delete 'bin' + delete 'Debug' + delete 'and_env' +} + +dependencies { + implementation 'com.android.support:support-v4:28.0.0' +} diff --git a/build/android/gradle/wrapper/gradle-wrapper.jar b/build/android/gradle/wrapper/gradle-wrapper.jar index 8c0fb64a8698b08ecc4158d828ca593c4928e9dd..6b6ea3ab4ff4f69d55c5fd9c0a6ac70f47d41008 100644 GIT binary patch delta 48672 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%0Alk0k!JB4fW=&r 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 delta 43942 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 diff --git a/build/android/gradle/wrapper/gradle-wrapper.properties b/build/android/gradle/wrapper/gradle-wrapper.properties index ca812af6c..d7d50b600 100644 --- a/build/android/gradle/wrapper/gradle-wrapper.properties +++ b/build/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Aug 27 20:10:09 CEST 2016 +#Mon Oct 15 00:47:03 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/build/android/gradlew b/build/android/gradlew index 91a7e269e..cccdd3d51 100755 --- a/build/android/gradlew +++ b/build/android/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,47 +6,6 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/build/android/gradlew.bat b/build/android/gradlew.bat index 8a0b282aa..f9553162f 100644 --- a/build/android/gradlew.bat +++ b/build/android/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/build/android/src/debug/AndroidManifest.xml b/build/android/src/debug/AndroidManifest.xml index a3815b9f8..ee04d1d03 100644 --- a/build/android/src/debug/AndroidManifest.xml +++ b/build/android/src/debug/AndroidManifest.xml @@ -1,4 +1,5 @@ - + + diff --git a/build/android/src/main/AndroidManifest.xml b/build/android/src/main/AndroidManifest.xml index df218fb33..7f61cda38 100644 --- a/build/android/src/main/AndroidManifest.xml +++ b/build/android/src/main/AndroidManifest.xml @@ -1,34 +1,59 @@ - + package="net.minetest.minetest" + android:installLocation="auto"> + + + - - + + + + - + android:launchMode="singleTask" + android:screenOrientation="sensorLandscape" + android:theme="@style/AppTheme"> - - - - + + + + + + + diff --git a/build/android/src/main/java/net.minetest.minetest/MainActivity.java b/build/android/src/main/java/net.minetest.minetest/MainActivity.java new file mode 100644 index 000000000..1baa71668 --- /dev/null +++ b/build/android/src/main/java/net.minetest.minetest/MainActivity.java @@ -0,0 +1,79 @@ +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.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat;; +import android.widget.Toast; + +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(); + } + } + + protected void checkPermission() { + final List 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[missingPermissions.size()]); + 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) { + switch (requestCode) { + case 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(); + break; + } + } + + public 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 index eb92acb63..b570fe61a 100644 --- a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java +++ b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java @@ -1,5 +1,17 @@ package net.minetest.minetest; +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; @@ -7,410 +19,355 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; -import java.util.Vector; import java.util.Iterator; -import java.lang.Object; +import java.util.Vector; -import android.app.Activity; -import android.content.res.AssetFileDescriptor; +public class MinetestAssetCopy extends Activity { + ProgressBar m_ProgressBar; + TextView m_Filename; + copyAssetTask m_AssetCopy; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Environment; -import android.util.Log; -import android.view.Display; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.graphics.Rect; -import android.graphics.Paint; -import android.text.TextPaint; - -public class MinetestAssetCopy extends Activity -{ @Override - public void onCreate(Bundle savedInstanceState) - { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.assetcopy); - - m_ProgressBar = (ProgressBar) findViewById(R.id.progressBar1); - m_Filename = (TextView) findViewById(R.id.textView1); - + 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 prevActivity = (MinetestAssetCopy) getLastNonConfigurationInstance(); - if(prevActivity!= null) { + if (prevActivity != null) { m_AssetCopy = prevActivity.m_AssetCopy; - } - else { + } else { m_AssetCopy = new copyAssetTask(); m_AssetCopy.execute(); } } - + + @Override + protected void onResume() { + super.onResume(); + makeFullScreen(); + } + + public void makeFullScreen() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + 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() - { + public Object onRetainNonConfigurationInstance() { return this; } - - ProgressBar m_ProgressBar; - TextView m_Filename; - - copyAssetTask m_AssetCopy; - - private class copyAssetTask extends AsyncTask - { - private long getFullSize(String filename) - { - long size = 0; - try { - InputStream src = getAssets().open(filename); - byte[] buf = new byte[4096]; - - int len = 0; - 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(int i=0; i < todel.length; i++) - { - Log.v("MinetestAssetCopy","deleting: " + todel[i].getAbsolutePath()); - todel[i].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[1*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) - { - boolean shortened = false; - String todisplay = m_tocopy.get(progress[0]); - m_ProgressBar.setProgress(progress[0]); - m_Filename.setText(todisplay); - } - else - { - boolean shortened = false; - String todisplay = m_Foldername; - String full_text = "scanning " + todisplay + " ..."; - m_Filename.setText(full_text); - } - } - - /** - * check al files and folders in filelist - */ - protected void ProcessFileList() - { - String FlashBaseDir = - Environment.getExternalStorageDirectory().getAbsolutePath(); - - Iterator itr = m_filenames.iterator(); - - while (itr.hasNext()) - { - String current_path = (String) itr.next(); - 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 = -1; - - if (testme.exists()) - { - try - { - AssetFileDescriptor fd = getAssets().openFd(current_path); - asset_filesize = fd.getLength(); - fd.close(); - } - catch (IOException e) - { - refresh = true; - 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 - */ - protected 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 - */ - protected 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(); - } - - protected boolean isAssetFolder(String path) - { - return m_foldernames.contains(path); - } - + private class copyAssetTask extends AsyncTask { boolean m_copy_started = false; String m_Foldername = "media"; Vector m_foldernames; Vector m_filenames; Vector m_tocopy; Vector 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 = 0; + 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 (int i = 0; i < todel.length; i++) { + Log.v("MinetestAssetCopy", "deleting: " + todel[i].getAbsolutePath()); + todel[i].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) { + boolean shortened = false; + String todisplay = m_tocopy.get(progress[0]); + m_ProgressBar.setProgress(progress[0]); + m_Filename.setText(todisplay); + } else { + boolean shortened = false; + String todisplay = m_Foldername; + String full_text = "scanning " + todisplay + " ..."; + m_Filename.setText(full_text); + } + } + + /** + * check all files and folders in filelist + */ + protected void ProcessFileList() { + String FlashBaseDir = + Environment.getExternalStorageDirectory().getAbsolutePath(); + + Iterator itr = m_filenames.iterator(); + + while (itr.hasNext()) { + String current_path = (String) itr.next(); + 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 = -1; + + if (testme.exists()) { + try { + AssetFileDescriptor fd = getAssets().openFd(current_path); + asset_filesize = fd.getLength(); + fd.close(); + } catch (IOException e) { + refresh = true; + 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 + */ + protected 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 + */ + protected 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(); + } + + protected 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 index 68dc73274..4cd899025 100644 --- a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java +++ b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java @@ -6,63 +6,59 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.InputType; -import android.util.Log; 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; public AlertDialog mTextInputDialog; public EditText mTextInputWidget; - - private final int MultiLineTextInput = 1; - private final int SingleLineTextInput = 2; - private final int SingleLinePasswordInput = 3; - + @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"); - + 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 | + mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); - } - else { + } 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()); } - }); + 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){ + if (KeyCode == KeyEvent.KEYCODE_ENTER) { pushResult(mTextInputWidget.getText().toString()); return true; @@ -70,19 +66,19 @@ public class MinetestTextEntry extends Activity { return false; } }); - + mTextInputDialog = builder.create(); mTextInputDialog.show(); } - + public void pushResult(String text) { Intent resultData = new Intent(); resultData.putExtra("text", text); - setResult(Activity.RESULT_OK,resultData); + setResult(Activity.RESULT_OK, resultData); mTextInputDialog.dismiss(); finish(); } - + public void cancelDialog() { setResult(Activity.RESULT_CANCELED); mTextInputDialog.dismiss(); diff --git a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java index 159521a50..234a503da 100644 --- a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java +++ b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java @@ -2,22 +2,54 @@ package net.minetest.minetest; import android.app.NativeActivity; import android.content.Intent; +import android.os.Build; import android.os.Bundle; -import android.util.Log; +import android.view.View; import android.view.WindowManager; public class MtNativeActivity extends NativeActivity { + + static { + System.loadLibrary("openal"); + System.loadLibrary("ogg"); + System.loadLibrary("vorbis"); + System.loadLibrary("gmp"); + 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); m_MessagReturnCode = -1; m_MessageReturnValue = ""; - } @Override - public void onDestroy() { - super.onDestroy(); + protected void onResume() { + super.onResume(); + makeFullScreen(); + } + + public void makeFullScreen() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + 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() { @@ -26,7 +58,7 @@ public class MtNativeActivity extends NativeActivity { } public void showDialog(String acceptButton, String hint, String current, - int editType) { + int editType) { Intent intent = new Intent(this, MinetestTextEntry.class); Bundle params = new Bundle(); @@ -37,11 +69,9 @@ public class MtNativeActivity extends NativeActivity { intent.putExtras(params); startActivityForResult(intent, 101); m_MessageReturnValue = ""; - m_MessagReturnCode = -1; + m_MessagReturnCode = -1; } - public static native void putMessageBoxResult(String text); - /* ugly code to workaround putMessageBoxResult not beeing found */ public int getDialogState() { return m_MessagReturnCode; @@ -66,34 +96,15 @@ public class MtNativeActivity extends NativeActivity { @Override protected void onActivityResult(int requestCode, int resultCode, - Intent data) { + Intent data) { if (requestCode == 101) { if (resultCode == RESULT_OK) { String text = data.getStringExtra("text"); m_MessagReturnCode = 0; m_MessageReturnValue = text; - } - else { + } else { m_MessagReturnCode = 1; } } } - - static { - System.loadLibrary("openal"); - System.loadLibrary("ogg"); - System.loadLibrary("vorbis"); - System.loadLibrary("ssl"); - System.loadLibrary("crypto"); - System.loadLibrary("gmp"); - System.loadLibrary("iconv"); - - // We don't have to load libminetest.so ourselves, - // but if we do, we get nicer logcat errors when - // loading fails. - System.loadLibrary("minetest"); - } - - private int m_MessagReturnCode; - private String m_MessageReturnValue; } diff --git a/build/android/src/main/res/drawable-hdpi/irr_icon.png b/build/android/src/main/res/drawable-hdpi/irr_icon.png deleted file mode 100644 index 0b6861a0d3d87b15f65460a33a520afc62b53657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5490 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 diff --git a/build/android/src/main/res/drawable/background.png b/build/android/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..43bd6089ec30a1ebd68f90296cb8d4633c0dde14 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5Tzhu?;t_A+19G`NT^vIy c;*uqv067a77-dYInSd+?Pgg&ebxsLQ0GX;0bN~PV literal 0 HcmV?d00001 diff --git a/build/android/src/main/res/drawable/bg.xml b/build/android/src/main/res/drawable/bg.xml new file mode 100644 index 000000000..c76ec372d --- /dev/null +++ b/build/android/src/main/res/drawable/bg.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/build/android/src/main/res/layout/assetcopy.xml b/build/android/src/main/res/layout/assetcopy.xml index 1fcfffd65..b3da2f027 100644 --- a/build/android/src/main/res/layout/assetcopy.xml +++ b/build/android/src/main/res/layout/assetcopy.xml @@ -1,24 +1,24 @@ - + - + - + - + diff --git a/build/android/src/main/res/mipmap/ic_launcher.png b/build/android/src/main/res/mipmap/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..88a83782c6a6d1fe866a0eb8ef5355398dc2e1a8 GIT binary patch literal 5780 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 S + + + + + + +