Как обнаружить планшетное устройство в Android? - PullRequest
4 голосов
/ 22 сентября 2011

Я пытаюсь перенести приложение, разработанное для смартфонов, на планшеты с небольшими изменениями. Есть ли в Android API для определения, является ли устройство планшетом?

Я могу сделать это, сравнивая размеры экрана, но как правильно определить планшет?

Ответы [ 4 ]

18 голосов
/ 08 декабря 2011

Я не думаю, что в API есть какие-либо конкретные флаги.

На основе примера приложения GDD 2011 я буду использовать следующие вспомогательные методы:

public static boolean isHoneycomb() {
    // Can use static final constants like HONEYCOMB, declared in later versions
    // of the OS since they are inlined at compile time. This is guaranteed behavior.
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

public static boolean isHoneycombTablet(Context context) {
    return isHoneycomb() && isTablet(context);
}

Источник

1 голос
/ 06 ноября 2012

Думая о «новых» зарезервированных каталогах (например, values-sw600dp), я создал этот метод на основе ширины экрана DP:

/**
 * Returns true if the current device is a smartphone or a "tabletphone"
 * like Samsung Galaxy Note or false if not.
 * A Smartphone is "a device with less than TABLET_MIN_DP_WEIGHT" dpi
 * 
 * @return true if the current device is a smartphone or false in other 
 * case
 */
protected static boolean isSmartphone(Activity act){
    DisplayMetrics metrics = new DisplayMetrics();
    act.getWindowManager().getDefaultDisplay().getMetrics(metrics);

    int dpi = 0;
    if (metrics.widthPixels < metrics.heightPixels){
        dpi = (int) (metrics.widthPixels / metrics.density);
    }
    else{
        dpi = (int) (metrics.heightPixels / metrics.density);
    }

    if (dpi < TABLET_MIN_DP_WEIGHT)         return true;
    else                                    return false;
}



 public static final int TABLET_MIN_DP_WEIGHT = 450;  

И в этом списке вы можете найти некоторые из DPпопулярных устройств и размеров планшетов:

Wdp / Hdp

GALAXY Nexus: 360/567
XOOM: 1280/752
GALAXY ПРИМЕЧАНИЕ: 400/615
NEXUS 7: 961/528
GALAXY TAB (> 7 && <10): 1280/752 <br>GALAXY S3: 360/615

Wdp = Ширина dp
Hdp = Высота dp

1 голос
/ 22 сентября 2011

Я бы ввел «Режим планшета» в настройках приложения, который был бы включен по умолчанию, если это позволяет разрешение (используйте общий порог пикселей).

IFAIK Android 3.0 представляет реальную поддержку планшета, все предыдущие версии предназначены длятелефоны и планшеты просто большие телефоны - есть один;)

0 голосов
/ 27 марта 2013

поместите этот метод в onResume () и можете проверить.

public double tabletSize() {

     double size = 0;
        try {

            // Compute screen size

            DisplayMetrics dm = context.getResources().getDisplayMetrics();

            float screenWidth  = dm.widthPixels / dm.xdpi;

            float screenHeight = dm.heightPixels / dm.ydpi;

            size = Math.sqrt(Math.pow(screenWidth, 2) +

                                 Math.pow(screenHeight, 2));

        } catch(Throwable t) {

        }

        return size;

    }

как правило, таблетки начинаются после размера 6 дюймов.

...