|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|