package com.openfarmanager.android.utils; import android.annotation.TargetApi; import android.content.Context; import android.content.res.Configuration; import android.os.Build; import android.os.Environment; import android.util.DisplayMetrics; import android.view.Display; import android.view.WindowManager; import com.openfarmanager.android.App; import java.io.File; /** * System utilities methods. * * @author Vlad Namashko */ public class SystemUtils { private static boolean sIsBigScreen = true; private static boolean sIsTablet = true; public static void init(Context context) { int sizeCategory = context.getResources().getConfiguration().screenLayout; Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int screenSize = (sizeCategory & Configuration.SCREENLAYOUT_SIZE_MASK); if (screenSize <= Configuration.SCREENLAYOUT_SIZE_LARGE) { if (metrics.densityDpi == DisplayMetrics.DENSITY_HIGH && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Weird Samsung device & Kobo & all others 2.x sIsBigScreen = false; sIsTablet = screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE; } else if (screenSize < Configuration.SCREENLAYOUT_SIZE_LARGE) { sIsBigScreen = sIsTablet = false; } else { sIsBigScreen = true; } } } public static int getAndroidSdkInt() { return Build.VERSION.SDK_INT; } /** * Determines, if current android version is Honeycomb (ask 11) or never. * It's important due some incompatibility issues with older versions. * * @return <code>true</code> if current os version is 11 or never, <code>false</code> otherwise. */ public static boolean isHoneycombOrNever() { return getAndroidSdkInt() >= 11; } public static boolean isBigScreen() { return sIsBigScreen; } public static boolean isTablet() { return sIsTablet; } @TargetApi(21) public static String getExternalStorage(final String fullPath) { if (StorageUtils.checkVersion()) { File[] dirs = App.sInstance.getExternalFilesDirs(null); for (File dir : dirs) { dir = dir.getParentFile().getParentFile().getParentFile().getParentFile(); if (fullPath.toLowerCase().startsWith(dir.getAbsolutePath().toLowerCase()) && Environment.isExternalStorageRemovable(dir)) { return dir.getAbsolutePath(); } } } return null; } }