package eoc.studio.voicecard.newspaper;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import eoc.studio.voicecard.R;
public class DrawableProcess
{
private final static String TAG = "DrawableProcess";
protected static final String IMAGE_CACHE_PATH = Environment.getExternalStorageDirectory() + "/Screenshot.jpg";
protected static final String IMAGE_DEFAULT_PATH = Environment.getExternalStorageDirectory() + "/DCIM/";
protected static final int[] NEWSPAPER_STYLE_TITLE_DRAWABLE = new int[]
{ R.drawable.news_t01, R.drawable.news_t02, R.drawable.news_t03, R.drawable.news_t04, R.drawable.news_t05 };
protected static final int[] MAGAZINE_STYLE_TITLE_DRAWABLE = new int[]
{ R.drawable.mag_t01, R.drawable.mag_t02, R.drawable.mag_t03, R.drawable.mag_t04, R.drawable.mag_t05 };
protected static final int PROCESS_TYPE_TITLE = 1, PROCESS_TYPE_MAIN_PHOTO = 2, PROCESS_TYPE_LEFT_MAIN_VIEW = 3,
PROCESS_TYPE_LEFT_PHOTO_VIEW = 4, PROCESS_TYPE_LEFT_BOTTON_MAIN_VIEW = 5,
PROCESS_TYPE_LEFT_BOTTON_PHOTO_VIEW1 = 6, PROCESS_TYPE_LEFT_BOTTON_PHOTO_VIEW2 = 7;
protected static final boolean IS_USER_CALL_FUNCTION = true, IS_NOT_USER_CALL_FUNCTION = false;
protected static Uri imageUri;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static int getNewspaperDrawable(int value)
{
return NEWSPAPER_STYLE_TITLE_DRAWABLE[value];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static int getMagazineDrawable(int value)
{
return MAGAZINE_STYLE_TITLE_DRAWABLE[value];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static Bitmap takeScreenshot(final View view)
{
if (view == null)
{
return null;
}
///reset
view.setDrawingCacheEnabled(false);
view.setDrawingCacheEnabled(true);
view.refreshDrawableState();
return Bitmap.createBitmap(checkNeedHideView(view).getDrawingCache());
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static boolean saveBitmap(Context context, Bitmap bitmap, boolean userUse)
{
if (bitmap == null)
{
return false;
}
File imagePath = null;
if (userUse)
{
imagePath = new File(IMAGE_DEFAULT_PATH + getDateTime() + ".jpg");
}
else
{
imagePath = new File(IMAGE_CACHE_PATH);
}
try
{
FileOutputStream fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.JPEG, 80, fos);
fos.flush();
fos.close();
if (userUse)
{
reScanMedia(context, imagePath);
}
return true;
}
catch (FileNotFoundException e)
{
return false;
}
catch (IOException e)
{
return false;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static boolean saveBitmap(Context context, Bitmap bitmap)
{
return saveBitmap(context, bitmap, IS_NOT_USER_CALL_FUNCTION);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static BitmapDrawable getBitmapToDrawable(final Context context, final Bitmap bitmap)
{
BitmapDrawable bd = new BitmapDrawable(context.getResources(), bitmap);
return bd;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void getTitleView(Activity activity)
{
Intent SetTitleView = new Intent();
SetTitleView.setClass(activity, NewspaperSetTitleActivity.class);
activity.startActivityForResult(SetTitleView, PROCESS_TYPE_TITLE);
activity.overridePendingTransition(0, 0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void getLeftMainView(Activity activity)
{
Intent SetLeftMainView = new Intent();
SetLeftMainView.setClass(activity, NewspaperEditViewActivity.class);
activity.startActivityForResult(SetLeftMainView, PROCESS_TYPE_LEFT_MAIN_VIEW);
activity.overridePendingTransition(0, 0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void getBottomLeftMainView(Activity activity)
{
Intent SetBottomLeftMainView = new Intent();
SetBottomLeftMainView.setClass(activity, NewspaperEditViewActivity.class);
activity.startActivityForResult(SetBottomLeftMainView, PROCESS_TYPE_LEFT_BOTTON_MAIN_VIEW);
activity.overridePendingTransition(0, 0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void sendNews(Activity activity)
{
Intent sendNews = new Intent();
sendNews.setClass(activity, NewspaperSendActivity.class);
activity.startActivity(sendNews);
activity.overridePendingTransition(0, 0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void runEditActivity(Activity activity, int type)
{
Intent RunEditActivity = new Intent();
RunEditActivity.setClass(activity, NewspaperEditViewActivity.class);
activity.startActivityForResult(RunEditActivity, type);
activity.overridePendingTransition(0, 0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static void getImage(final Activity activity, final int requestCode)
{
imageUri = null;
imageUri = Uri.fromFile(new File(IMAGE_CACHE_PATH));
if (imageUri == null)
{
return;
}
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", 520);
intent.putExtra("outputY", 260);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", false);
activity.startActivityForResult(intent, requestCode);
}
//@bruce for fixed aspect ratio
protected static void getImageForSmallIcon(final Activity activity, final int requestCode, int width, int height)
{
Log.d(TAG, "getImage width: "+ width+",height: "+height);
imageUri = null;
imageUri = Uri.fromFile(new File(IMAGE_CACHE_PATH));
if (imageUri == null)
{
return;
}
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", width*6);
intent.putExtra("outputY", height*6);
intent.putExtra("aspectX", width);
intent.putExtra("aspectY", height);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", false);
activity.startActivityForResult(intent, requestCode);
}
protected static void getImageForBigIcon(final Activity activity, final int requestCode, int width, int height)
{
Log.d(TAG, "getImage width: "+ width+",height: "+height);
imageUri = null;
imageUri = Uri.fromFile(new File(IMAGE_CACHE_PATH));
if (imageUri == null)
{
return;
}
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("aspectX", width);
intent.putExtra("aspectY", height);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", false);
activity.startActivityForResult(intent, requestCode);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static void getImage(final Activity activity, final int requestCode, Uri uri, int width, int height) {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("aspectX", width);
intent.putExtra("aspectY", height);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", false);
activity.startActivityForResult(intent, requestCode);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected static Bitmap decodeUriAsBitmap(Context context, Uri uri)
{
Bitmap bitmap = null;
try
{
bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
}
catch (FileNotFoundException e)
{
return null;
}
return bitmap;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private static View checkNeedHideView(final View view)
{
switch (ValueCacheProcessCenter.selectedStyleType)
{
case ValueCacheProcessCenter.NEWS_STYLE_NEWSPAPER:
{
return view;
}
case ValueCacheProcessCenter.NEWS_STYLE_MAGAZINE:
{
if (checkViewIsNull(view.findViewById(R.id.magazineSetBackgroundView)))
{
view.findViewById(R.id.magazineSetBackgroundView).setVisibility(View.INVISIBLE);
}
return view;
}
}
return view;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private static boolean checkViewIsNull(View view)
{
return view != null;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private static String getDateTime()
{
SimpleDateFormat sdFormat = new SimpleDateFormat("yyMMddHHmmss");
Date date = new Date();
String strDate = sdFormat.format(date);
return strDate;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private static void reScanMedia(Context context, File file)
{
new IntentFilter("android.intent.action.MEDIA_SCANNER_STARTED").addDataScheme("file");
if (file != null)
{
Uri localUri = Uri.fromFile(file);
Intent localIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
localIntent.setData(localUri);
context.sendBroadcast(localIntent);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}