morristech
3/10/2017 - 5:57 AM

helper class to get device device info

helper class to get device device info

public class Device {

    public static final boolean GTE_HC = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;

    private static String emailAddress = null;
    private static Boolean isTablet = null;
    private static DisplayMetrics displayMetrics = null;

    public static void onConfigurationChanged(Configuration newConfig) {
        displayMetrics = new DisplayMetrics();
        ((WindowManager) Application.systemService(Context.WINDOW_SERVICE))
                .getDefaultDisplay().getMetrics(displayMetrics);
    }

    public static boolean isTablet() {
        if (isTablet == null) {
            int screenSize = (Application.configuration().screenLayout & SCREENLAYOUT_SIZE_MASK);
            isTablet = screenSize >= SCREENLAYOUT_SIZE_LARGE;
        }
        return isTablet;
    }

    public static void hideKeyboard(View v) {
        InputMethodManager imm = (InputMethodManager) Application.systemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }

    public static void showKeyboard() {
        InputMethodManager imm = (InputMethodManager) Application.systemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }

    public static boolean isLandscape() {
        return Application.configuration().orientation == ORIENTATION_LANDSCAPE;
    }

    public static boolean isPortrait() {
        return Application.configuration().orientation == ORIENTATION_PORTRAIT;
    }

    public static int getScreenWidth() {
        return getDisplayMetrics().widthPixels;
    }

    public static int getScreenHeight() {
        return getDisplayMetrics().heightPixels;
    }

    public static float getDPI() { return getDisplayMetrics().density; }

    public static String getID() { return Secure.getString(Application.context().getContentResolver(), Secure.ANDROID_ID); }

    public static DisplayMetrics getDisplayMetrics() {
        if (displayMetrics == null) {
            onConfigurationChanged(null);
        }
        return displayMetrics;
    }

    public static boolean hasInternet() {
        ConnectivityManager connectivityManager =
                (ConnectivityManager) Application.systemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }

    public static String getEmailAddress() {
        if (emailAddress != null) return emailAddress;
        Account[] accounts = AccountManager.get(Application.context()).getAccounts();
        for (Account account : accounts) {
            if (Patterns.EMAIL_ADDRESS.matcher(account.name).matches()) {
                emailAddress = account.name;
                return emailAddress;
            }
        }
        if (StringUtils.isBlank(emailAddress)) emailAddress = "";
        return emailAddress;
    }

    public static String getInfo() {
        return "Device model: "
                + Build.MODEL + "\n"
                + "Android version: "
                + Build.VERSION.RELEASE + "\n"
                + "Carrier: "
                + getCarrier();
    }

    public static String getCarrier() {
        TelephonyManager tm = (TelephonyManager) Application.systemService((Context.TELEPHONY_SERVICE));
        return tm.getNetworkOperatorName();
    }
}