diff --git a/app/src/main/java/asgardius/page/s3manager/Downloader.java b/app/src/main/java/asgardius/page/s3manager/Downloader.java
index db3a0ca..cccb165 100644
--- a/app/src/main/java/asgardius/page/s3manager/Downloader.java
+++ b/app/src/main/java/asgardius/page/s3manager/Downloader.java
@@ -5,7 +5,6 @@ import static android.content.ContentValues.TAG;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
-import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
@@ -17,9 +16,7 @@ import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
-import android.widget.EditText;
import android.widget.ProgressBar;
-import android.widget.TextView;
import android.widget.Toast;
import com.amazonaws.auth.AWSCredentials;
@@ -29,11 +26,7 @@ import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions;
import com.amazonaws.services.s3.model.S3Object;
-import com.google.android.material.snackbar.Snackbar;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -48,8 +41,12 @@ public class Downloader extends AppCompatActivity {
ProgressBar simpleProgressBar;
Intent intent;
Button fileDownload;
- Thread downloadFile;
+ Thread downloadFile, downloadProgress;
S3Object object;
+ boolean started = false;
+ boolean cancel = false;
+ long filesize = 0;
+ long transfered;
private WifiManager.WifiLock mWifiLock;
private PowerManager.WakeLock mWakeLock;
private PowerManager powerManager;
@@ -85,77 +82,124 @@ public class Downloader extends AppCompatActivity {
@Override
public void onClick(View view) {
//buttonaction
- simpleProgressBar.setVisibility(View.VISIBLE);
- fileDownload.setEnabled(false);
- fileDownload.setText(getResources().getString(R.string.download_in_progress));
- //Acquiring WakeLock and WifiLock if not held
- if (!mWifiLock.isHeld()) {
- mWifiLock.acquire();
- //System.out.println("WifiLock acquired");
- }
- if (!mWakeLock.isHeld()) {
- mWakeLock.acquire();
- //System.out.println("WakeLock acquired");
- }
- downloadFile = new Thread(new Runnable() {
-
- @Override
- public void run() {
- simpleProgressBar.setVisibility(View.VISIBLE);
- try {
- //Your code goes here
- //s3client.createBucket(bucket, location);
- //System.out.println(fkey);
- object = s3client.getObject(bucket, prefix+filename);
- writeContentToFile(fileuri);
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- //simpleProgressBar.setProgress(100);
- //Releasing WifiLock and WakeLock if held
- if (mWifiLock.isHeld()) {
- mWifiLock.release();
- //System.out.println("WifiLock released");
- }
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- //System.out.println("WakeLock released");
- }
- simpleProgressBar.setVisibility(View.INVISIBLE);
- fileDownload.setText(getResources().getString(R.string.download_success));
- Toast.makeText(getApplicationContext(),getResources().getString(R.string.download_success), Toast.LENGTH_SHORT).show();
- //simpleProgressBar.setVisibility(View.INVISIBLE);
- }
- });
- //System.out.println("tree "+treelevel);
- //System.out.println("prefix "+prefix);
-
- } catch (Exception e) {
- e.printStackTrace();
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- //Releasing WifiLock and WakeLock if held
- if (mWifiLock.isHeld()) {
- mWifiLock.release();
- //System.out.println("WifiLock released");
- }
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- //System.out.println("WakeLock released");
- }
- simpleProgressBar.setVisibility(View.INVISIBLE);
- fileDownload.setText(getResources().getString(R.string.download_failed));
- Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
- }
- });
- //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
- //finish();
- }
+ if (started) {
+ cancel = true;
+ downloadFile.interrupt();
+ //simpleProgressBar.setVisibility(View.INVISIBLE);
+ } else {
+ started = true;
+ simpleProgressBar.setVisibility(View.VISIBLE);
+ //fileDownload.setEnabled(false);
+ fileDownload.setText(getResources().getString(R.string.cancel_download));
+ //Acquiring WakeLock and WifiLock if not held
+ if (!mWifiLock.isHeld()) {
+ mWifiLock.acquire();
+ //System.out.println("WifiLock acquired");
}
- });
- downloadFile.start();
+ if (!mWakeLock.isHeld()) {
+ mWakeLock.acquire();
+ //System.out.println("WakeLock acquired");
+ }
+ downloadFile = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ simpleProgressBar.setVisibility(View.VISIBLE);
+ try {
+ //Your code goes here
+ //s3client.createBucket(bucket, location);
+ //System.out.println(fkey);
+ object = s3client.getObject(bucket, prefix+filename);
+ filesize = object.getObjectMetadata().getContentLength();
+ writeContentToFile(fileuri);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ //simpleProgressBar.setProgress(100);
+ //Releasing WifiLock and WakeLock if held
+ if (mWifiLock.isHeld()) {
+ mWifiLock.release();
+ //System.out.println("WifiLock released");
+ }
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ //System.out.println("WakeLock released");
+ }
+ simpleProgressBar.setVisibility(View.INVISIBLE);
+ fileDownload.setText(getResources().getString(R.string.download_success));
+ fileDownload.setEnabled(false);
+ //simpleProgressBar.setVisibility(View.INVISIBLE);
+ }
+ });
+ //System.out.println("tree "+treelevel);
+ //System.out.println("prefix "+prefix);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ //Releasing WifiLock and WakeLock if held
+ if (mWifiLock.isHeld()) {
+ mWifiLock.release();
+ //System.out.println("WifiLock released");
+ }
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ //System.out.println("WakeLock released");
+ }
+ simpleProgressBar.setVisibility(View.INVISIBLE);
+ if (cancel) {
+ fileDownload.setText(getResources().getString(R.string.download_canceled));
+ } else {
+ fileDownload.setText(getResources().getString(R.string.download_failed));
+ }
+ fileDownload.setEnabled(false);
+ }
+ });
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
+ //finish();
+ }
+ }
+ });
+ downloadProgress = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ simpleProgressBar.setVisibility(View.VISIBLE);
+ try {
+ //Your code goes here
+ while (!cancel && fileDownload.isEnabled()) {
+ try {
+ if (filesize != 0) {
+ System.out.println("file size: "+Long.toString(filesize));
+ }
+ Thread.sleep(500);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ //simpleProgressBar.setProgress(100);
+ }
+ });
+ //System.out.println("tree "+treelevel);
+ //System.out.println("prefix "+prefix);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
+ //finish();
+ }
+ }
+ });
+ downloadFile.start();
+ downloadProgress.start();
+ }
}
});
diff --git a/app/src/main/java/asgardius/page/s3manager/Uploader.java b/app/src/main/java/asgardius/page/s3manager/Uploader.java
index cc32bd6..38cff49 100644
--- a/app/src/main/java/asgardius/page/s3manager/Uploader.java
+++ b/app/src/main/java/asgardius/page/s3manager/Uploader.java
@@ -12,7 +12,6 @@ import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.PowerManager;
-import android.os.storage.StorageManager;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
@@ -59,6 +58,7 @@ public class Uploader extends AppCompatActivity {
Intent intent;
Button fileUpload;
Thread uploadFile;
+ boolean started = false;
private static final long MAX_SINGLE_PART_UPLOAD_BYTES = 5 * 1024 * 1024;
private WifiManager.WifiLock mWifiLock;
private PowerManager.WakeLock mWakeLock;
@@ -97,93 +97,100 @@ public class Uploader extends AppCompatActivity {
@Override
public void onClick(View view) {
//buttonaction
- if (fileuri == null && folder == null) {
- Toast.makeText(Uploader.this, getResources().getString(R.string.no_file_selected), Toast.LENGTH_SHORT).show();
+ if (started) {
+ started = false;
+ uploadFile.interrupt();
+ //simpleProgressBar.setVisibility(View.INVISIBLE);
} else {
- //Acquiring WakeLock and WifiLock if not held
- if (!mWifiLock.isHeld()) {
- mWifiLock.acquire();
- //System.out.println("WifiLock acquired");
- }
- if (!mWakeLock.isHeld()) {
- mWakeLock.acquire();
- //System.out.println("WakeLock acquired");
- }
+ started = true;
simpleProgressBar.setVisibility(View.VISIBLE);
- fileUpload.setEnabled(false);
- fileUpload.setText(getResources().getString(R.string.upload_in_progress));
- uploadFile = new Thread(new Runnable() {
-
- @Override
- public void run() {
- if (fprefix.getText().toString().endsWith("/") || fprefix.getText().toString().equals("")) {
- fkey = fprefix.getText().toString()+getDisplayName(fileuri);
- } else {
- fkey = fprefix.getText().toString()+"/"+getDisplayName(fileuri);
- }
- //System.out.println(fkey);
- progress = 0;
- filesize = 0;
- try {
- //Your code goes here
- //s3client.createBucket(bucket, location);
- //System.out.println(fkey);
- ufile = readContentToFile(fileuri);
- filesize = ufile.length();
- //PutObjectRequest request = new PutObjectRequest(bucket, fkey, ufile);
- //upload = s3client.putObject(request);
- putS3Object(bucket, fkey, ufile);
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- //Releasing WifiLock and WakeLock if held
- if (mWifiLock.isHeld()) {
- mWifiLock.release();
- //System.out.println("WifiLock released");
- }
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- //System.out.println("WakeLock released");
- }
- //simpleProgressBar.setProgress(100);
- simpleProgressBar.setVisibility(View.INVISIBLE);
- fileUpload.setText(getResources().getString(R.string.upload_success));
- Toast.makeText(getApplicationContext(),getResources().getString(R.string.upload_success), Toast.LENGTH_SHORT).show();
- //simpleProgressBar.setVisibility(View.INVISIBLE);
- }
- });
- //System.out.println("tree "+treelevel);
- //System.out.println("prefix "+prefix);
-
- } catch (Exception e) {
- e.printStackTrace();
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- //Releasing WifiLock and WakeLock if held
- if (mWifiLock.isHeld()) {
- mWifiLock.release();
- //System.out.println("WifiLock released");
- }
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- //System.out.println("WakeLock released");
- }
- simpleProgressBar.setVisibility(View.INVISIBLE);
- fileUpload.setEnabled(true);
- fileUpload.setText(getResources().getString(R.string.retry));
- Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
- }
- });
- //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
- //finish();
- }
+ if (fileuri == null && folder == null) {
+ Toast.makeText(Uploader.this, getResources().getString(R.string.no_file_selected), Toast.LENGTH_SHORT).show();
+ } else {
+ //Acquiring WakeLock and WifiLock if not held
+ if (!mWifiLock.isHeld()) {
+ mWifiLock.acquire();
+ //System.out.println("WifiLock acquired");
}
- });
- //simpleProgressBar.setVisibility(View.VISIBLE);
- uploadFile.start();
+ if (!mWakeLock.isHeld()) {
+ mWakeLock.acquire();
+ //System.out.println("WakeLock acquired");
+ }
+ //eUpload.setEnabled(false);
+ fileUpload.setText(getResources().getString(R.string.cancel_upload));
+ uploadFile = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ if (fprefix.getText().toString().endsWith("/") || fprefix.getText().toString().equals("")) {
+ fkey = fprefix.getText().toString()+getDisplayName(fileuri);
+ } else {
+ fkey = fprefix.getText().toString()+"/"+getDisplayName(fileuri);
+ }
+ //System.out.println(fkey);
+ progress = 0;
+ filesize = 0;
+ try {
+ //Your code goes here
+ //s3client.createBucket(bucket, location);
+ //System.out.println(fkey);
+ ufile = readContentToFile(fileuri);
+ filesize = ufile.length();
+ //PutObjectRequest request = new PutObjectRequest(bucket, fkey, ufile);
+ //upload = s3client.putObject(request);
+ putS3Object(bucket, fkey, ufile);
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ //Releasing WifiLock and WakeLock if held
+ if (mWifiLock.isHeld()) {
+ mWifiLock.release();
+ //System.out.println("WifiLock released");
+ }
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ //System.out.println("WakeLock released");
+ }
+ //simpleProgressBar.setProgress(100);
+ simpleProgressBar.setVisibility(View.INVISIBLE);
+ fileUpload.setText(getResources().getString(R.string.upload_success));
+ fileUpload.setEnabled(false);
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.upload_success), Toast.LENGTH_SHORT).show();
+ //simpleProgressBar.setVisibility(View.INVISIBLE);
+ }
+ });
+ //System.out.println("tree "+treelevel);
+ //System.out.println("prefix "+prefix);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ //Releasing WifiLock and WakeLock if held
+ if (mWifiLock.isHeld()) {
+ mWifiLock.release();
+ //System.out.println("WifiLock released");
+ }
+ if (mWakeLock.isHeld()) {
+ mWakeLock.release();
+ //System.out.println("WakeLock released");
+ }
+ simpleProgressBar.setVisibility(View.INVISIBLE);
+ //fileUpload.setEnabled(true);
+ fileUpload.setText(getResources().getString(R.string.retry));
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
+ }
+ });
+ //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show();
+ //finish();
+ }
+ }
+ });
+ //simpleProgressBar.setVisibility(View.VISIBLE);
+ uploadFile.start();
/*while (progress <= 99) {
System.out.println("Upload in progress");
if (upload != null) {
@@ -200,6 +207,7 @@ public class Uploader extends AppCompatActivity {
e.printStackTrace();
}
}*/
+ }
}
}
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 0eecf51..c1fba4e 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -11,7 +11,7 @@
Se requiere un nombre para el bucket
Compartir archivo
Descargar archivo
- Descarga en proceso
+ Cancelar descarga
Archivo descargado exitosamente
Subir archivo en este bucket
Subir carpeta en este bucket
@@ -21,7 +21,7 @@
Prefijo del objeto
Favor de seleccionar un archivo
Archivo subido exitosamente
- Subida en proceso
+ Cancelar subida
Reintentar
Descarga fallida
Éxito
@@ -84,4 +84,5 @@
Tamaño del bucket
Archivos
Debe establecer una fecha de expiración para compartir archivos
+ Descarga cancelada
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e0b8061..995cdd6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -27,7 +27,7 @@
Share file
Open in
Download file
- Download in progress
+ Cancel download
File downloaded successfully
Upload file to this bucket
Upload folder to this bucket
@@ -37,9 +37,10 @@
Object prefix
Please select a file
File uploaded successfully
- Upload in progress
+ Cancel Upload
Retry
Download failed
+ Download canceled
Success
Properties
File Size