package org.aisen.android.common.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.TypedArray;
import android.database.Cursor;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.opengl.GLES10;
import android.provider.MediaStore;
import android.support.annotation.AttrRes;
import android.text.TextUtils;
import android.util.TypedValue;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import java.io.File;
import java.util.List;
import javax.microedition.khronos.opengles.GL10;
import javax.microedition.khronos.opengles.GL11;
public class Utils {
public static int getBitmapMaxWidthAndMaxHeight() {
int[] maxSizeArray = new int[1];
GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxSizeArray, 0);
if (maxSizeArray[0] == 0) {
GLES10.glGetIntegerv(GL11.GL_MAX_TEXTURE_SIZE, maxSizeArray, 0);
}
return 2048;
}
public static int getAppHeight(Activity paramActivity) {
Rect localRect = new Rect();
paramActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect);
return localRect.height();
}
public static Intent getShareIntent(String title, String content, String url) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra("imageURL", url);
if (!TextUtils.isEmpty(url)) {
File file = BitmapLoader.getInstance().getCacheFile(url);
if (file.exists()) {
shareIntent.setType("image/*");
Uri uri = Uri.fromFile(file);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
}
}
if (TextUtils.isEmpty(content)) {
content = title;
} else {
if (!TextUtils.isEmpty(title))
shareIntent.putExtra(Intent.EXTRA_TITLE, title);
}
shareIntent.putExtra(Intent.EXTRA_TEXT, content);
return shareIntent;
}
public static int dip2px(Context context, float dipValue) {
float reSize = context.getResources().getDisplayMetrics().density;
return (int) ((dipValue * reSize) + 0.5);
}
public static int px2dip(Context context, int pxValue) {
float reSize = context.getResources().getDisplayMetrics().density;
return (int) ((pxValue / reSize) + 0.5);
}
public static float sp2px(Context context, int spValue) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics());
}
public static int length(String paramString) {
int i = 0;
for (int j = 0; j < paramString.length(); j++) {
if (paramString.substring(j, j + 1).matches("[Α-¥]")) {
i += 2;
} else {
i++;
}
}
if (i % 2 > 0) {
i = 1 + i / 2;
} else {
i = i / 2;
}
return i;
}
public static boolean isIntentSafe(Activity activity, Uri uri) {
Intent mapCall = new Intent(Intent.ACTION_VIEW, uri);
PackageManager packageManager = activity.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapCall, 0);
return activities.size() > 0;
}
public static boolean isIntentSafe(Activity activity, Intent intent) {
PackageManager packageManager = activity.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
return activities.size() > 0;
}
public static boolean isGooglePlaySafe(Activity activity) {
Uri uri = Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.gms");
Intent mapCall = new Intent(Intent.ACTION_VIEW, uri);
mapCall.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
mapCall.setPackage("com.android.vending");
PackageManager packageManager = activity.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapCall, 0);
return activities.size() > 0;
}
public static String getLatestCameraPicture(Activity activity) {
String[] projection = new String[] { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA,
MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns.MIME_TYPE };
final Cursor cursor = activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null,
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
if (cursor.moveToFirst()) {
String path = cursor.getString(1);
return path;
}
return null;
}
public static Drawable resolveDrawable(Context context, @AttrRes int attr) {
return resolveDrawable(context, attr, null);
}
public static Drawable resolveDrawable(Context context, @AttrRes int attr, @SuppressWarnings("SameParameterValue") Drawable fallback) {
TypedArray a = context.getTheme().obtainStyledAttributes(new int[]{attr});
try {
Drawable d = a.getDrawable(0);
if (d == null && fallback != null)
d = fallback;
return d;
} finally {
a.recycle();
}
}
}