Как узнать, является ли его планшет или телефон в android программно? [дубликат]


На этот вопрос уже есть ответ здесь:

Я хотел бы получить, чтобы определить, является ли данное устройство планшетом или телефоном в android.Я попробовал два из них в симуляторе, но ни один не сработал. Оба здесь:

Первый

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) 
{
    //code
}

Второй

    private boolean isTabletDevice() 
{         
    if (android.os.Build.VERSION.SDK_INT >= 11) 
    { 
    // honeycomb                    
    // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11     
    Configuration con = getResources().getConfiguration();              
    try {                     
            Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast");    
            Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE    
            return r;              
        } catch (Exception x)
        {    
            return false;          
        }             
    }            
    return false;                   
}
4 3

4 ответа:

Попробуйте этот код. Вы можете получить экран дюймов

    String inputSystem;
    inputSystem = android.os.Build.ID;
    Log.d("hai",inputSystem);
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();  // deprecated
    int height = display.getHeight();  // deprecated
    Log.d("hai",width+"");
    Log.d("hai",height+"");
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(width/dm.xdpi,2);
    double y = Math.pow(height/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
    Log.d("hai","Screen inches : " + screenInches+"");

Создайте две папки layout в папке res, подобной этой layout и layout_xlarge.Создайте один нежелательный вид в файле layout-xlarge .Получите этот нежелательный идентификатор представления программно.Доступ к нежелательной ID в код в примечание. blocak если вы получаете null указатель исключения тогда небольшое устройство иначе таблетки.еще одна вещь скрывает нежелательный вид в layout-xlarge screen.

Я думаю, что первый вопрос, на который нужно ответить, - это то, что вы подразумеваете под "телефоном" или "планшетом". Мы можем иметь некоторое различие в наших умах, но на самом деле, ваше заявление не должно волновать. Ноутбук ASUS Transformer это планшет, Samsung Галактика Nexus телефон. Что такое Samsung Galaxy Note ? Engadget и другие называют его "фаблет " - что должно предполагать ваше приложение в этом случае?

Является ли ваше определение "планшета" любым устройством, которое не имеет SIM-карты? Это тоже а ошибочное определение, потому что есть много планшетов, которые имеют встроенную SIM-карту. Является ли ваше определение "планшета" любым устройством, которое по умолчанию работает в альбомном режиме и вращается в портретном режиме? Возможно, это один из подходов, но я сомневаюсь, что этого достаточно, поскольку в будущем могут появиться планшеты, которые по умолчанию будут портретными или, что еще хуже, будут иметь квадратные форм-факторы.

На мой взгляд, лучший способ справиться с этим-использовать рекомендации Android и включить макеты пользовательского интерфейса. Если вы думаете, что вы если у вас есть четкое определение планшетов по сравнению с телефонами и вам абсолютно необходимо обнаружить один над другим, вам, вероятно, нужно сделать что-то вроде извлечения имени модели из строки агента пользователя браузера, а затем сопоставить его с базой данных имен планшетов, которые вы поддерживаете. Я знаю. Фу.

Поместите этот метод в 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-дюймового размера.