|
|
|
@ -19,16 +19,15 @@
|
|
|
|
|
package fr.mobdev.goblim.activity;
|
|
|
|
|
|
|
|
|
|
import android.app.ProgressDialog;
|
|
|
|
|
import android.content.ContentResolver;
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
|
|
import android.graphics.Bitmap;
|
|
|
|
|
import android.graphics.drawable.Drawable;
|
|
|
|
|
import android.graphics.BitmapFactory;
|
|
|
|
|
import android.net.Uri;
|
|
|
|
|
import android.provider.MediaStore;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
|
|
import android.support.v7.widget.Toolbar;
|
|
|
|
|
import android.util.DisplayMetrics;
|
|
|
|
|
import android.view.Menu;
|
|
|
|
|
import android.view.MenuItem;
|
|
|
|
|
import android.view.View;
|
|
|
|
@ -36,12 +35,12 @@ import android.widget.ArrayAdapter;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.ImageButton;
|
|
|
|
|
import android.widget.ImageView;
|
|
|
|
|
import android.widget.ProgressBar;
|
|
|
|
|
import android.widget.Spinner;
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
@ -74,8 +73,6 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
private static final int THIRTY = 30;
|
|
|
|
|
private static final int YEAR = 365;
|
|
|
|
|
|
|
|
|
|
private static final int THUMB_MAX_SIDE = 800;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
@ -104,16 +101,24 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
resetImage();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ProgressBar thumbProgress = (ProgressBar) findViewById(R.id.progress_thumb);
|
|
|
|
|
thumbProgress.setVisibility(View.GONE);
|
|
|
|
|
//retrieve previous state if it exist
|
|
|
|
|
if(savedInstanceState != null) {
|
|
|
|
|
int selectedServer = savedInstanceState.getInt("selectedServer");
|
|
|
|
|
imageUri = savedInstanceState.getParcelable("imageURI");
|
|
|
|
|
bt = savedInstanceState.getParcelable("thumb");
|
|
|
|
|
if(bt != null) {
|
|
|
|
|
ImageView th = (ImageView) findViewById(R.id.thumbnail_main);
|
|
|
|
|
th.setImageBitmap(bt);
|
|
|
|
|
} else {
|
|
|
|
|
displayImage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selectedServer < urls.size()) {
|
|
|
|
|
Spinner servers = (Spinner) findViewById(R.id.servers_spinner);
|
|
|
|
|
servers.setSelection(selectedServer);
|
|
|
|
|
}
|
|
|
|
|
displayImage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//prepare the listener that handle upload result
|
|
|
|
@ -222,6 +227,7 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
Spinner selectedServer = (Spinner) findViewById(R.id.servers_spinner);
|
|
|
|
|
int pos = selectedServer.getSelectedItemPosition();
|
|
|
|
|
savedInstanceState.putInt("selectedServer", pos);
|
|
|
|
|
savedInstanceState.putParcelable("thumb",bt);
|
|
|
|
|
super.onSaveInstanceState(savedInstanceState);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -250,16 +256,28 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
private void displayImage() {
|
|
|
|
|
if(imageUri != null) {
|
|
|
|
|
ContentResolver contentResolver = getContentResolver();
|
|
|
|
|
//display it in the imageView
|
|
|
|
|
try {
|
|
|
|
|
bt = MediaStore.Images.Media.getBitmap(contentResolver, imageUri);
|
|
|
|
|
bt = generateThumb(bt);
|
|
|
|
|
ImageView view = (ImageView) findViewById(R.id.thumbnail_main);
|
|
|
|
|
view.setImageBitmap(bt);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
final ProgressBar thumbProgress = (ProgressBar) findViewById(R.id.progress_thumb);
|
|
|
|
|
thumbProgress.setVisibility(View.VISIBLE);
|
|
|
|
|
final ImageView view = (ImageView) findViewById(R.id.thumbnail_main);
|
|
|
|
|
view.setVisibility(View.GONE);
|
|
|
|
|
final Button send = (Button) findViewById(R.id.upload_button);
|
|
|
|
|
send.setEnabled(false);
|
|
|
|
|
new Thread(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
bt = generateThumb(imageUri);
|
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
view.setVisibility(View.VISIBLE);
|
|
|
|
|
view.setImageBitmap(bt);
|
|
|
|
|
thumbProgress.setVisibility(View.GONE);
|
|
|
|
|
send.setEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}).start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -284,56 +302,25 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
int delete = deletedDays.get(pos);
|
|
|
|
|
|
|
|
|
|
//read image as bytes to upload it
|
|
|
|
|
byte[] bytearray = null;
|
|
|
|
|
|
|
|
|
|
//create a fileStream from the file path
|
|
|
|
|
InputStream stream = null;
|
|
|
|
|
try{
|
|
|
|
|
stream = getContentResolver().openInputStream(imageUri);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
//read data from the file and store it in a byte array
|
|
|
|
|
if(stream != null) {
|
|
|
|
|
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
|
|
|
|
|
int readed = 0;
|
|
|
|
|
byte[] buffer = new byte[1024];
|
|
|
|
|
while(readed != -1) {
|
|
|
|
|
try {
|
|
|
|
|
readed = stream.read(buffer);
|
|
|
|
|
if(readed != -1)
|
|
|
|
|
outStream.write(buffer,0,readed);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
readed = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bytearray = outStream.toByteArray();
|
|
|
|
|
}
|
|
|
|
|
//upload image and display a progress bar
|
|
|
|
|
if(bytearray != null && bytearray.length > 0) {
|
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
|
runOnUiThread(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
progressDialog = new ProgressDialog(UploadActivity.this);
|
|
|
|
|
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
|
|
|
|
progressDialog.setMax(100);
|
|
|
|
|
progressDialog.setMessage(getString(R.string.upload_progress));
|
|
|
|
|
progressDialog.setCancelable(false);
|
|
|
|
|
progressDialog.show();
|
|
|
|
|
}
|
|
|
|
|
progressDialog = new ProgressDialog(UploadActivity.this);
|
|
|
|
|
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
|
|
|
|
progressDialog.setMax(100);
|
|
|
|
|
progressDialog.setMessage(getString(R.string.upload_progress));
|
|
|
|
|
progressDialog.setCancelable(false);
|
|
|
|
|
progressDialog.show();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
NetworkManager.getInstance(listener, getApplicationContext()).upload(url, delete, null, bytearray);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
listener.fileUploadError(getString(R.string.empty_file));
|
|
|
|
|
}
|
|
|
|
|
NetworkManager.getInstance(listener).upload(this,url, delete, imageUri);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void resetImage(){
|
|
|
|
|
imageUri = null;
|
|
|
|
|
bt = null;
|
|
|
|
|
ImageView view = (ImageView) findViewById(R.id.thumbnail_main);
|
|
|
|
|
view.setImageBitmap(null);
|
|
|
|
|
ImageButton resetButton = (ImageButton) findViewById(R.id.reset_button);
|
|
|
|
@ -352,20 +339,19 @@ public class UploadActivity extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Bitmap generateThumb(Bitmap original){
|
|
|
|
|
|
|
|
|
|
int ratio = 1;
|
|
|
|
|
if(original.getWidth()>THUMB_MAX_SIDE || original.getHeight() > THUMB_MAX_SIDE){
|
|
|
|
|
if(original.getWidth()>original.getHeight())
|
|
|
|
|
ratio = original.getWidth()/THUMB_MAX_SIDE;
|
|
|
|
|
else
|
|
|
|
|
ratio = original.getHeight()/THUMB_MAX_SIDE;
|
|
|
|
|
private Bitmap generateThumb(Uri imageUri){
|
|
|
|
|
|
|
|
|
|
Bitmap thumb = null;
|
|
|
|
|
try {
|
|
|
|
|
BitmapFactory.Options opts = new BitmapFactory.Options();
|
|
|
|
|
opts.inScaled = true;
|
|
|
|
|
opts.inDensity = 640;
|
|
|
|
|
opts.inTargetDensity = DisplayMetrics.DENSITY_MEDIUM;
|
|
|
|
|
thumb = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri),null,opts);
|
|
|
|
|
System.out.println("thumb "+thumb.getWidth()+"x"+thumb.getHeight());
|
|
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int newWidth = original.getWidth()/ratio;
|
|
|
|
|
int newHeight = original.getHeight()/ratio;
|
|
|
|
|
|
|
|
|
|
Bitmap thumb = Bitmap.createScaledBitmap(original,newWidth,newHeight,false);
|
|
|
|
|
return thumb;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|