aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaco0416 <laco0416@gmail.com>2014-09-19 22:25:11 +0900
committerlaco0416 <laco0416@gmail.com>2014-09-19 22:25:11 +0900
commitf4841e386e0009e7e0bfe2ae2d94103a75109883 (patch)
treeb5e20b27cd9fe1cf69c0f510ff0f29c1db47398e
parent0d72e15f31eed611aaaad893b849b16e2ef826b2 (diff)
downloadSmileEssence-f4841e386e0009e7e0bfe2ae2d94103a75109883.tar.gz
Close #64 Resize image if media file size is over 1MB
-rw-r--r--src/net/lacolaco/smileessence/twitter/task/TweetTask.java77
-rw-r--r--src/net/lacolaco/smileessence/view/PostFragment.java7
-rw-r--r--src/net/lacolaco/smileessence/view/adapter/PostState.java6
3 files changed, 82 insertions, 8 deletions
diff --git a/src/net/lacolaco/smileessence/twitter/task/TweetTask.java b/src/net/lacolaco/smileessence/twitter/task/TweetTask.java
index e9a2ebe2..ea6eba15 100644
--- a/src/net/lacolaco/smileessence/twitter/task/TweetTask.java
+++ b/src/net/lacolaco/smileessence/twitter/task/TweetTask.java
@@ -25,6 +25,10 @@
package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Environment;
+import android.text.TextUtils;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.data.StatusCache;
import net.lacolaco.smileessence.logging.Logger;
@@ -35,23 +39,82 @@ import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
public class TweetTask extends TwitterTask<Status>
{
// ------------------------------ FIELDS ------------------------------
+ private static final int MEDIA_SIZE_LIMIT = 1 * 1024 * 1024;
+
private final StatusUpdate update;
+ private final String mediaPath;
private final Activity activity;
// --------------------------- CONSTRUCTORS ---------------------------
public TweetTask(Twitter twitter, StatusUpdate update, Activity activity)
{
+ this(twitter, update, null, activity);
+ }
+
+ public TweetTask(Twitter twitter, StatusUpdate update, String mediaPath, Activity activity)
+ {
super(twitter);
this.update = update;
+ this.mediaPath = mediaPath;
this.activity = activity;
}
+ // --------------------- GETTER / SETTER METHODS ---------------------
+
+ public File getMediaFile()
+ {
+ File file = new File(mediaPath);
+ if(file.length() >= MEDIA_SIZE_LIMIT)
+ {
+ BitmapFactory.Options opt = new BitmapFactory.Options();
+ opt.inJustDecodeBounds = true; //decoder is not return bitmap but set option
+ BitmapFactory.decodeFile(mediaPath, opt);
+ String tempFilePath = "temp.jpg";
+ File compressedFile = new File(Environment.getExternalStorageDirectory() + "/" + tempFilePath);
+ FileOutputStream fos = null;
+ try
+ {
+ fos = new FileOutputStream(compressedFile);
+ float ratio = (float) file.length() / (float) MEDIA_SIZE_LIMIT;
+ BitmapFactory.Options resizeOpt = new BitmapFactory.Options();
+ resizeOpt.inPurgeable = true;
+ resizeOpt.inSampleSize = (int) Math.ceil(ratio);
+ Bitmap bitmap = BitmapFactory.decodeFile(mediaPath, resizeOpt);
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
+ bitmap.recycle();
+ return compressedFile;
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ Logger.error(e);
+ }
+ finally
+ {
+ try
+ {
+ fos.close();
+ }
+ catch(IOException e)
+ {
+ e.printStackTrace();
+ Logger.error(e);
+ }
+ }
+ }
+ return file;
+ }
+
// ------------------------ OVERRIDE METHODS ------------------------
@Override
@@ -73,7 +136,19 @@ public class TweetTask extends TwitterTask<Status>
{
try
{
- return twitter.tweets().updateStatus(update);
+ if(TextUtils.isEmpty(mediaPath))
+ {
+ return twitter.tweets().updateStatus(update);
+ }
+ else
+ {
+ File mediaFile = getMediaFile();
+ if(mediaFile.exists())
+ {
+ update.setMedia(mediaFile);
+ }
+ return twitter.tweets().updateStatus(update);
+ }
}
catch(TwitterException e)
{
diff --git a/src/net/lacolaco/smileessence/view/PostFragment.java b/src/net/lacolaco/smileessence/view/PostFragment.java
index 1546a610..f0636fe0 100644
--- a/src/net/lacolaco/smileessence/view/PostFragment.java
+++ b/src/net/lacolaco/smileessence/view/PostFragment.java
@@ -436,13 +436,14 @@ public class PostFragment extends Fragment implements TextWatcher, View.OnFocusC
private void submitPost()
{
+ hideIME();
setStateFromView();
- StatusUpdate statusUpdate = PostState.getState().toStatusUpdate();
+ PostState state = PostState.getState();
+ StatusUpdate statusUpdate = state.toStatusUpdate();
MainActivity mainActivity = (MainActivity) getActivity();
- TweetTask tweetTask = new TweetTask(TwitterApi.getTwitter(mainActivity.getCurrentAccount()), statusUpdate, mainActivity);
+ TweetTask tweetTask = new TweetTask(TwitterApi.getTwitter(mainActivity.getCurrentAccount()), statusUpdate, state.getMediaFilePath(), mainActivity);
tweetTask.execute();
PostState.newState().beginTransaction().commit();
- hideIME();
mainActivity.setSelectedPageIndex(MainActivity.ADAPTER_HOME);
}
}
diff --git a/src/net/lacolaco/smileessence/view/adapter/PostState.java b/src/net/lacolaco/smileessence/view/adapter/PostState.java
index f193fba8..f7e0fa0f 100644
--- a/src/net/lacolaco/smileessence/view/adapter/PostState.java
+++ b/src/net/lacolaco/smileessence/view/adapter/PostState.java
@@ -24,13 +24,10 @@
package net.lacolaco.smileessence.view.adapter;
-import android.text.TextUtils;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.view.dialog.DialogHelper;
import twitter4j.StatusUpdate;
-import java.io.File;
-
public class PostState
{
@@ -125,7 +122,8 @@ public class PostState
*/
public StatusUpdate toStatusUpdate()
{
- return new StatusUpdate(getText()).inReplyToStatusId(getInReplyToStatusID()).media(TextUtils.isEmpty(getMediaFilePath()) ? null : new File(getMediaFilePath()));
+ return new StatusUpdate(getText())
+ .inReplyToStatusId(getInReplyToStatusID());
}
private PostState copy(PostState another)