package com.bluemor.reddotface.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Canvas;
import android.graphics.Color;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Toast;
import com.bluemor.reddotface.R;
import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
public class Util {
public static void initImageLoader(Context context) {
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.default_face)
.showImageForEmptyUri(R.drawable.default_face)
.showImageOnFail(R.drawable.default_face).cacheInMemory(true)
.considerExifParams(true)
.displayer(new FadeInBitmapDisplayer(300, true, true, true))
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(
context).defaultDisplayImageOptions(defaultOptions)
.memoryCache(new WeakMemoryCache());
ImageLoaderConfiguration config = builder.build();
ImageLoader.getInstance().init(config);
}
@SuppressWarnings("deprecation")
public static ArrayList<String> getGalleryPhotos(Activity act) {
ArrayList<String> galleryList = new ArrayList<String>();
try {
final String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = act.managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
null, null, orderBy);
if (imagecursor != null && imagecursor.getCount() > 0) {
while (imagecursor.moveToNext()) {
String item = new String();
int dataColumnIndex = imagecursor
.getColumnIndex(MediaStore.Images.Media.DATA);
item = imagecursor.getString(dataColumnIndex);
galleryList.add(item);
}
}
} catch (Exception e) {
e.printStackTrace();
}
Collections.reverse(galleryList);
return galleryList;
}
public static Bitmap convertViewToBitmap(View view) {
Bitmap bitmap = null;
try {
int width = view.getWidth();
int height = view.getHeight();
if (width != 0 && height != 0) {
bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.layout(0, 0, width, height);
view.setBackgroundColor(Color.WHITE);
view.draw(canvas);
}
} catch (Exception e) {
bitmap = null;
e.getStackTrace();
}
return bitmap;
}
public static boolean saveImageToGallery(Context context, Bitmap bmp,
boolean isPng) {
if (bmp == null) {
return false;
}
File appDir = new File(Environment.getExternalStorageDirectory(),
context.getString(R.string.app_name));
if (!appDir.exists()) {
if (!appDir.mkdir()) {
return false;
}
}
String fileName;
if (isPng) {
fileName = System.currentTimeMillis() + ".png";
} else {
fileName = System.currentTimeMillis() + ".jpg";
}
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
if (isPng) {
bmp.compress(CompressFormat.PNG, 100, fos);
} else {
bmp.compress(CompressFormat.JPEG, 100, fos);
}
bmp.recycle();
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
}
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(appDir)));
return true;
}
public static void t(Context context, String text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
}