package com.sromku.simple.fb.example.utils; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.content.res.Configuration; import android.graphics.Bitmap; import android.text.Html; import android.util.Base64; import android.util.Log; import android.util.Pair; import android.view.ViewGroup; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Locale; public class Utils { /** * Take screenshot of the activity including the action bar * * @param activity * @return The screenshot of the activity including the action bar */ public static Bitmap takeScreenshot(Activity activity) { ViewGroup decor = (ViewGroup) activity.getWindow().getDecorView(); ViewGroup decorChild = (ViewGroup) decor.getChildAt(0); decorChild.setDrawingCacheEnabled(true); decorChild.buildDrawingCache(); Bitmap drawingCache = decorChild.getDrawingCache(true); Bitmap bitmap = Bitmap.createBitmap(drawingCache); decorChild.setDrawingCacheEnabled(false); return bitmap; } /** * Print hash key */ public static void printHashKey(Context context) { try { String TAG = "com.sromku.simple.fb.example"; PackageInfo info = context.getPackageManager().getPackageInfo(TAG, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.d(TAG, "keyHash: " + keyHash); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } /** * Update language * * @param code * The language code. Like: en, cz, iw, ... */ public static void updateLanguage(Context context, String code) { Locale locale = new Locale(code); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); } /** * Build alert dialog with properties and data * * @param pairs * @return {@link AlertDialog} */ public static AlertDialog buildProfileResultDialog(Activity activity, Pair<String, String>... pairs) { StringBuilder stringBuilder = new StringBuilder(); for (Pair<String, String> pair : pairs) { stringBuilder.append(String.format("<h3>%s</h3>", pair.first)); stringBuilder.append(String.valueOf(pair.second)); stringBuilder.append("<br><br>"); } AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setMessage(Html.fromHtml(stringBuilder.toString())).setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alertDialog = builder.create(); return alertDialog; } public static String toHtml(Object object) { StringBuilder stringBuilder = new StringBuilder(256); try { for (Field field : object.getClass().getDeclaredFields()) { field.setAccessible(true); if (Modifier.isStatic(field.getModifiers())) { continue; } Object val = field.get(object); stringBuilder.append("<b>"); stringBuilder.append(field.getName().substring(1, field.getName().length())); stringBuilder.append(": "); stringBuilder.append("</b>"); stringBuilder.append(val); stringBuilder.append("<br>"); } } catch (Exception e) { // Do nothing } return stringBuilder.toString(); } public static byte[] getSamleVideo(Context context, String assetFile) { try { InputStream inputStream = context.getAssets().open(assetFile); return getBytes(inputStream); } catch (IOException e) { e.printStackTrace(); } return null; } private static byte[] getBytes(InputStream input) throws IOException { byte[] buffer = new byte[8192]; int bytesRead; ByteArrayOutputStream output = new ByteArrayOutputStream(); while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } return output.toByteArray(); } }