package net.dev123.yibo.service.task; import java.io.File; import net.dev123.commons.util.FileUtil; import net.dev123.entity.StatusUpdate; import net.dev123.yibo.EditMicroBlogActivity; import net.dev123.yibo.YiBoApplication; import net.dev123.yibo.common.Constants; import net.dev123.yibo.common.GlobalVars; import net.dev123.yibo.common.ImageQuality; import net.dev123.yibo.common.ImageUtil; import net.dev123.yibo.service.cache.ImageCache; import android.os.AsyncTask; import android.util.Log; /** * @author Weiping Ye * @version 创建时间:2011-10-11 下午5:38:05 **/ public abstract class AbstractUpdateStatusTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { protected boolean rotateImage() { boolean isRotated = false; File image = statusUpdate.getImage(); if (rotateDegrees != 0F) { String imagePath = ImageCache.getTempFolder() + File.separator + System.currentTimeMillis() + "." + FileUtil.getFileExtensionFromName(image.getName()); File rotatedImage = new File(imagePath); isRotated = ImageUtil.rotateImageFile(image, rotatedImage, rotateDegrees); if (isRotated) { image = rotatedImage; statusUpdate.setImage(image); } } return isRotated; } protected boolean compressImage() { boolean isCompress = false; File image = statusUpdate.getImage(); ImageQuality quality = yibo.getImageUploadQuality(); if (quality == ImageQuality.Un_Disposal || FileUtil.isGif(image.getAbsolutePath())) { return isCompress; } int imageSize = ImageQuality.Low.getSize(); if (quality == ImageQuality.Adaptive_Net) { switch (GlobalVars.NET_TYPE) { case WIFI: quality = ImageQuality.High; break; case NONE: case MOBILE_GPRS: case MOBILE_EDGE: quality = ImageQuality.Low; break; case UNKNOW: case MOBILE_3G: quality = ImageQuality.Middle; break; } } if (quality == ImageQuality.High) { imageSize = ImageQuality.High.getSize(); } else if (quality == ImageQuality.Middle) { imageSize = ImageQuality.Middle.getSize(); } else { imageSize = ImageQuality.Low.getSize(); } if(Constants.DEBUG) { Log.d(TAG, "prefix size: " + imageSize); } String destName = ImageCache.getTempFolder() + File.separator + System.currentTimeMillis() + "." + FileUtil.getFileExtensionFromName(image.getName()); File dest = new File(destName); isCompress = ImageUtil.scaleImageFile(image, dest, imageSize); if (isCompress) { image = dest; statusUpdate.setImage(image); } if (Constants.DEBUG) { Log.d(TAG, isCompress + " scale upload file, size: " + imageSize); } if (Constants.DEBUG) { Log.d(TAG, "image file: " + image.getAbsolutePath()); } return isCompress; } public AbstractUpdateStatusTask(EditMicroBlogActivity context, StatusUpdate statusUpdate) { this.context = context; this.statusUpdate = statusUpdate; yibo = (YiBoApplication) context.getApplicationContext(); } private static final String TAG = AbstractUpdateStatusTask.class.getSimpleName(); protected EditMicroBlogActivity context; protected YiBoApplication yibo; protected int rotateDegrees; protected StatusUpdate statusUpdate; public void setRotateDegrees(int rotateDegrees) { this.rotateDegrees = rotateDegrees; } public int getRotateDegrees() { return rotateDegrees; } }