package utils;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.os.Build;
import android.os.Vibrator;
import android.util.DisplayMetrics;
import android.util.Pair;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
import com.testdroid.sample.android.R;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/**
* @author Saad Chaudhry <saad.chaudry@bitbar.com>
*/
public class Helpers {
private static final String TAG = Helpers.class.getName().toString();
public static Pair<Integer, Integer> getWindowDimensionsWithoutMargin(Context context, WindowManager windowManager, int dpMarginX, int dpMarginY) {
dpMarginX *= 2;
dpMarginY *= 2;
DisplayMetrics displayMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
int marginX = dpToPx(context, dpMarginX);
if (hasSoftNavigation(context)) {
dpMarginY += 30;
}
int marginY = dpToPx(context, dpMarginY);
Pair<Integer, Integer> dimensions = new Pair<Integer, Integer>(screenWidth - marginX, screenHeight - marginY);
return dimensions;
}
public static int getDimenDp(Context context, int dimenId) {
return ((int) (context.getResources().getDimension(dimenId) / context.getResources().getDisplayMetrics().density));
}
public static void toastDefault(Context context, String text, int duration) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.toast_default, null);
TextView textView = (TextView) view.findViewById(R.id.toast_default_text);
textView.setText(text);
Toast toast = new Toast(context);
// toast.setGravity(Gravity.TOP, 0, 250);
toast.setDuration(duration);
toast.setView(view);
toast.show();
}
public static boolean isGpsOn(Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (gpsEnabled) {
return true;
} else {
return false;
}
}
public static void toastWarning(Context context, String text, int duration) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.toast_warning, null);
TextView textView = (TextView) view.findViewById(R.id.toast_warning_text);
textView.setText(text);
Toast toast = new Toast(context);
// toast.setGravity(Gravity.TOP, 0, 250);
toast.setDuration(duration);
toast.setView(view);
toast.show();
}
private static int dpToPx(Context context, int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());
}
private static boolean hasSoftNavigation(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return !ViewConfiguration.get(context).hasPermanentMenuKey();
}
return false;
}
public static double round(double unrounded, int precision) {
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, BigDecimal.ROUND_HALF_DOWN);
return rounded.doubleValue();
}
public static String epochToHuman(long epoch) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss.SSS");
return simpleDateFormat.format(new Date(epoch));
}
public static int randomInt(int min, int max) {
Random random = new Random();
int randomInt = random.nextInt((max - min) + 1) + min;
return randomInt;
}
public static String getAppVersion(Context context) {
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
String version = pInfo.versionName;
return version;
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}
public static void vibrate(Context context, long[] pattern) {
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(pattern, -1);
}
}