jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.4.2'
+ classpath 'com.android.tools.build:gradle:3.5.1'
}
}
apply plugin: "com.android.application"
android {
- compileSdkVersion 28
+ compileSdkVersion 29
+ buildToolsVersion '29.0.2'
defaultConfig {
versionCode 24
versionName "${System.env.VERSION_STR}.${versionCode}"
minSdkVersion 14
- targetSdkVersion 28
+ targetSdkVersion 29
applicationId "net.minetest.minetest"
manifestPlaceholders = [package: "net.minetest.minetest", project: project.name]
ndk {
}
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
lintOptions {
disable "OldTargetApi", "GoogleAppIndexingWarning"
}
}
dependencies {
- implementation 'com.android.support:support-v4:28.0.0'
+ implementation 'androidx.core:core:1.1.0'
}
--- /dev/null
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
-#Fri Aug 09 22:14:33 CEST 2019
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
-
- <uses-permission android:name="android.permission.SET_DEBUG_APP" />
-</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="net.minetest.minetest"
android:installLocation="auto">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
- android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="${project}"
- android:resizeableActivity="false">
+ android:resizeableActivity="false"
+ tools:targetApi="n">
<meta-data
android:name="android.max_aspect"
- android:value="2.1" />
+ android:value="2.4" />
<activity
android:name=".MainActivity"
android:name=".MinetestTextEntry"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/Theme.Dialog"
- android:windowSoftInputMode="stateAlwaysHidden"/>
+ android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name=".MinetestAssetCopy"
android:screenOrientation="sensorLandscape"
- android:theme="@style/AppTheme"/>
+ android:theme="@style/AppTheme" />
</application>
</manifest>
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 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};
}
}
- protected void checkPermission() {
- final List<String> missingPermissions = new ArrayList<String>();
+ 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 (!missingPermissions.isEmpty()) {
// request permission
final String[] permissions = missingPermissions
- .toArray(new String[missingPermissions.size()]);
+ .toArray(new String[0]);
ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
} else {
final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
}
@Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
+ 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;
- }
+ 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();
- break;
+ }
+ // permission were granted - run
+ next();
}
}
- public void 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);
package net.minetest.minetest;
+import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.os.AsyncTask;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
-import java.util.Iterator;
import java.util.Vector;
public class MinetestAssetCopy extends Activity {
- ProgressBar m_ProgressBar;
- TextView m_Filename;
- copyAssetTask m_AssetCopy;
+ private ProgressBar m_ProgressBar;
+ private TextView m_Filename;
+ private copyAssetTask m_AssetCopy;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onResume();
makeFullScreen();
}
-
+
@Override
- protected void onDestroy() {
+ protected void onDestroy() {
super.onDestroy();
if (m_AssetCopy != null) {
m_AssetCopy.cancel(true);
}
- }
+ }
- public void makeFullScreen() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ 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
- );
- }
+ 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) {
+ if (hasFocus)
makeFullScreen();
- }
}
/* preserve asset copy background task to prevent restart of copying */
return this;
}
- private static class copyAssetTask extends AsyncTask<String, Integer, String> {
+ @SuppressLint("StaticFieldLeak")
+ private class copyAssetTask extends AsyncTask<String, Integer, String> {
boolean m_copy_started = false;
String m_Foldername = "media";
Vector<String> m_foldernames;
InputStream src = getAssets().open(filename);
byte[] buf = new byte[4096];
- int len = 0;
+ int len;
while ((len = src.read(buf)) > 0) {
size += len;
}
@Override
protected String doInBackground(String... files) {
- m_foldernames = new Vector<String>();
- m_filenames = new Vector<String>();
- m_tocopy = new Vector<String>();
- m_asset_size_unknown = new Vector<String>();
+ m_foldernames = new Vector<>();
+ m_filenames = new Vector<>();
+ m_tocopy = new Vector<>();
+ m_asset_size_unknown = new Vector<>();
String baseDir =
Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/";
} else {
File[] todel = TempFolder.listFiles();
- for (int i = 0; i < todel.length; i++) {
- Log.v("MinetestAssetCopy", "deleting: " + todel[i].getAbsolutePath());
- todel[i].delete();
+ for (File file : todel) {
+ Log.v("MinetestAssetCopy", "deleting: " + file.getAbsolutePath());
+ file.delete();
}
}
if (m_asset_size_unknown.contains(filename)) {
File testme = new File(baseDir + "/" + filename);
- if (testme.exists()) {
+ if (testme.exists())
filesize = testme.length();
- }
+
asset_size_unknown = true;
}
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() {
+ void ProcessFileList() {
String FlashBaseDir =
Environment.getExternalStorageDirectory().getAbsolutePath();
- Iterator itr = m_filenames.iterator();
-
- while (itr.hasNext()) {
- String current_path = (String) itr.next();
+ for (String current_path : m_filenames) {
String FlashPath = FlashBaseDir + "/" + current_path;
if (isAssetFolder(current_path)) {
File testme = new File(FlashPath);
long asset_filesize = -1;
- long stored_filesize = -1;
+ long stored_filesize;
if (testme.exists()) {
try {
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) {
+ if (asset_filesize == stored_filesize)
refresh = false;
- }
}
- if (refresh) {
+ if (refresh)
m_tocopy.add(current_path);
- }
}
}
/**
* read list of folders prepared on package build
*/
- protected void BuildFolderList() {
+ void BuildFolderList() {
try {
InputStream is = getAssets().open("index.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
/**
* read list of asset files prepared on package build
*/
- protected void BuildFileList() {
+ void BuildFileList() {
long entrycount = 0;
try {
InputStream is = getAssets().open("filelist.txt");
finish();
}
- protected boolean isAssetFolder(String path) {
+ boolean isAssetFolder(String path) {
return m_foldernames.contains(path);
}
}
private final int MultiLineTextInput = 1;
private final int SingleLineTextInput = 2;
private final int SingleLinePasswordInput = 3;
- public AlertDialog mTextInputDialog;
- public EditText mTextInputWidget;
+ private AlertDialog mTextInputDialog;
+ private EditText mTextInputWidget;
@Override
public void onCreate(Bundle savedInstanceState) {
mTextInputDialog.show();
}
- public void pushResult(String text) {
+ private void pushResult(String text) {
Intent resultData = new Intent();
resultData.putExtra("text", text);
setResult(Activity.RESULT_OK, resultData);
finish();
}
- public void cancelDialog() {
+ private void cancelDialog() {
setResult(Activity.RESULT_CANCELED);
mTextInputDialog.dismiss();
finish();
makeFullScreen();
}
- public void makeFullScreen() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ 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
- );
- }
+ 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) {
+ if (hasFocus)
makeFullScreen();
- }
}
public void copyAssets() {
<?xml version="1.0" encoding="utf-8"?>
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
- <style name="AppTheme" parent="@android:style/android:Theme.Material.Light.NoActionBar.Fullscreen">
+ <style name="AppTheme" parent="android:Theme.Material.Light.NoActionBar.Fullscreen">
<item name="android:windowNoTitle">true</item>
- <item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@drawable/bg</item>
+ <item name="android:windowLayoutInDisplayCutoutMode" tools:ignore="NewApi" tools:targetApi="o_mr1">
+ shortEdges
+ </item>
</style>
- <style name="Theme.Dialog" parent="@android:style/Theme.Material.Light.Dialog.NoActionBar"/>
+ <style name="Theme.Dialog" parent="@android:style/Theme.Material.Light.Dialog.NoActionBar">
+ <item name="android:windowNoTitle">true</item>
+ <item name="android:windowBackground">@android:color/transparent</item>
+ </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <style name="AppTheme" parent="@android:style/android:Theme.Holo.Light.NoActionBar.Fullscreen">
+ <style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen">
<item name="android:windowNoTitle">true</item>
- <item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@drawable/bg</item>
</style>
- <style name="Theme.Dialog" parent="@android:style/android:Theme.Holo.Light.Dialog.NoActionBar"/>
+ <style name="Theme.Dialog" parent="android:Theme.Holo.Light.Dialog.NoActionBar">
+ <item name="android:windowNoTitle">true</item>
+ <item name="android:windowBackground">@android:color/transparent</item>
+ </style>
</resources>